PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)


Posted in PHP onMay 30, 2017

本文实例讲述了PHP编程计算两个时间段是否有交集的实现方法。分享给大家供大家参考,具体如下:

优化前的版本:

/**
 * PHP计算两个时间段是否有交集(边界重叠不算)
 *
 * @param string $beginTime1 开始时间1
 * @param string $endTime1 结束时间1
 * @param string $beginTime2 开始时间2
 * @param string $endTime2 结束时间2
 * @return bool
 */
function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '') {
  $status = $beginTime2 - $beginTime1;
  if ($status > 0) {
    $status2 = $beginTime2 - $endTime1;
    if ($status2 > 0) {
      return false;
    } elseif ($status2 < 0) {
      return true;
    } else {
      return false;
    }
  } elseif($status < 0) {
    $status2 = $endTime2 - $beginTime1;
    if ($status2 > 0) {
      return true;
    } else if ($status2 < 0) {
      return false;
    } else {
      return false;
    }
  } else {
    $status2 = $endTime2 - $beginTime1;
    if ($status2 == 0) {
      return false;
    } else {
      return true;
    }
  }
}

优化后的版本(条件合并):

/**
 * PHP计算两个时间段是否有交集(边界重叠不算)
 *
 * @param string $beginTime1 开始时间1
 * @param string $endTime1 结束时间1
 * @param string $beginTime2 开始时间2
 * @param string $endTime2 结束时间2
 * @return bool
 */
function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '') {
  $status = $beginTime2 - $beginTime1;
  if ($status > 0) {
    $status2 = $beginTime2 - $endTime1;
    if ($status2 >= 0) {
      return false;
    } else {
      return true;
    }
  } else {
    $status2 = $endTime2 - $beginTime1;
    if ($status2 > 0) {
      return true;
    } else {
      return false;
    }
  }
}

测试:

$beginTime1 = strtotime('2015-08-07 06:30');
$endTime1 = strtotime('2015-08-07 08:30');
$beginTime2 = strtotime('2015-08-07 05:30');
$endTime2 = strtotime('2015-08-07 06:31');
echo is_time_cross($beginTime1, $endTime1, $beginTime2, $endTime2);//输出1
PHP 相关文章推荐
php递归函数中使用return的注意事项
Jan 17 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
destoon官方标签大全
Jun 20 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php单文件版在线代码编辑器
Mar 12 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 #PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 #PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 #PHP
PHP实现的简单AES加密解密算法实例
May 29 #PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 #PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 #PHP
PHP 网站修改默认访问文件的nginx配置
May 27 #PHP
You might like
php结合表单实现一些简单功能的例子
2011/06/04 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
详解JavaScript函数
2015/12/01 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python机器学习库常用汇总
2017/11/15 Python
python分数表示方式和写法
2019/06/26 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
基于Python的OCR实现示例
2020/04/03 Python
Django中的AutoField字段使用
2020/05/18 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
教师年终个人自我评价
2013/10/04 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
党员转正大会主持词
2015/07/02 职场文书
交通安全主题班会
2015/08/12 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript