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数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
php过滤敏感词的示例
Mar 31 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
PHP常用的缓存技术汇总
May 05 PHP
php实现的mongodb操作类
May 28 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
thinkphp5实现微信扫码支付
Dec 23 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PDO::errorCode讲解
2019/01/28 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python数据结构之链表详解
2017/09/12 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
pandas值替换方法
2018/07/10 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
大学生个人事迹材料
2014/01/21 职场文书
廉洁自律承诺书
2014/03/27 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
项目安全员岗位职责
2015/02/15 职场文书
素质教育学习心得体会
2016/01/19 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
Python经常使用的一些内置函数
2022/04/11 Python
python数字图像处理:图像简单滤波
2022/06/28 Python