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动态生成VRML网页
Oct 09 PHP
php实现mysql数据库备份类
Mar 20 PHP
PHP高级OOP技术演示
Aug 27 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
CI框架中zip类应用示例
Jun 17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
实例讲解php数据访问
May 09 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生成静态HTML速度快类库
2007/03/18 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
js中关于String对象的replace使用详解
2011/05/24 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
python中pygame模块用法实例
2014/10/09 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
使用python接入微信聊天机器人
2020/03/31 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
Python函数基本使用原理详解
2020/03/19 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
12岁生日感言
2014/01/21 职场文书
支部组织生活会方案
2014/06/10 职场文书
群教个人对照检查材料
2014/08/20 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android