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 相关文章推荐
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
php blowfish加密解密算法
Jul 02 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 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 正则表达式小结
2009/08/31 PHP
php google或baidu分页代码
2009/11/26 PHP
php防攻击代码升级版
2010/12/29 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
机械个人求职信范文
2014/01/24 职场文书
基层党员对照检查材料
2014/09/24 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis