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 相关文章推荐
实用函数10
Nov 08 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
pdo中使用参数化查询sql
Aug 11 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
使用PHP json_decode可能遇到的坑与解决方法
Aug 03 PHP
PHP实现git部署的方法教程
Dec 19 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
PHP中使用BigMap实例
2015/03/30 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
javascript 写类方式之一
2009/07/05 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python异常处理知识点总结
2019/02/18 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
文员个人的求职信范文
2013/09/26 职场文书
工作会议主持词
2014/03/17 职场文书
实习护士自荐信
2015/03/25 职场文书
公司出纳岗位职责
2015/03/31 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
生日宴会祝酒词
2015/08/10 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
2022年显卡天梯图(6月更新)
2022/06/17 数码科技
JavaScript设计模式之原型模式详情
2022/06/21 Javascript