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 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
php短域名转换为实际域名函数
Jan 17 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP文件读取功能的应用实例
May 08 PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
详解phpstorm2020最新破解方法
Sep 17 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
一个程序下载的管理程序(三)
2006/10/09 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
使用Python对SQLite数据库操作
2017/04/06 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python3爬虫全国地址信息
2019/01/05 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
医科大学生毕业的自我评价分享
2013/11/12 职场文书
《小池塘》教学反思
2014/02/28 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL