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 Array交叉表实现代码
Aug 05 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP实现小程序批量通知推送
Nov 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python requests 使用快速入门
2017/08/31 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Python异常处理操作实例详解
2018/08/28 Python
python实现多进程代码示例
2018/10/31 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
经济系大学生求职信
2013/10/01 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
校园文明标语
2014/06/13 职场文书
节水口号标语
2014/06/19 职场文书
公证委托书
2014/08/01 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
个人授权委托书样本
2014/09/13 职场文书
工作散漫检讨书
2014/09/16 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书