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 相关文章推荐
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP中实现crontab代码分享
Mar 26 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
php获得刚插入数据的id 的几种方法总结
May 31 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
ezSQL PHP数据库操作类库
2010/05/16 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
php命令行模式代码实例详解
2021/02/26 PHP
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
javascript实现留言板功能
2020/02/08 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
大学生演讲稿范文
2014/01/11 职场文书
教师简历自我评价
2014/02/03 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
共产党员承诺书
2014/03/25 职场文书
学生会主席演讲稿
2014/04/25 职场文书
保证书格式范文
2014/04/28 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
食品安全汇报材料
2014/08/18 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
医院护士工作检讨书
2014/10/26 职场文书