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中利用XML技术构造远程服务(上)
Oct 09 PHP
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php获取当月最后一天函数分享
Feb 02 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
PHP的命令行命令使用指南
Aug 18 PHP
php二维码生成
Oct 19 PHP
php+ajax制作无刷新留言板
Oct 27 PHP
PHP单态模式简单用法示例
Nov 16 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 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
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
js实现验证码干扰(静态)
2021/02/22 Javascript
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
独特的python循环语句
2016/11/20 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
教师绩效工资方案
2014/02/01 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
六五普法规划实施方案
2014/03/21 职场文书
交通事故私了协议书
2014/04/16 职场文书
新学期开学演讲稿
2014/05/24 职场文书
2015年档案室工作总结
2015/05/23 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers