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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
PHP 全角转半角实现代码
May 16 PHP
关于crontab的使用详解
Jun 24 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP写日志的实现方法
Nov 05 PHP
PHP中is_dir()函数使用指南
May 08 PHP
PHP自动生成表单代码分享
Jun 19 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
PHP编写简单的App接口
Aug 28 PHP
php Session无效分析资料整理
Nov 29 PHP
浅析php如何实现爬取数据原理
Sep 27 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/12/16 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Pytorch之parameters的使用
2019/12/31 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
如何利用python 读取配置文件
2021/01/06 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
校园安全广播稿
2014/02/08 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
大学生求职信
2014/06/17 职场文书
导游词之南京中山陵
2019/11/27 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
golang特有程序结构入门教程
2021/06/02 Python
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android