当前位置: 首页 > news >正文

php之 校验多个时间段是否重复

参考网址 https://www.kancloud.cn/xiaobaoxuetp/mywork/3069416
https://segmentfault.com/a/1190000020487996

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;} else {return true;}} else {$status2 = $endTime2 - $beginTime1;if ($status2 > 0) {return true;} else {return false;}}
}
$list = array(array('start_s'=>'10:00', 'end_s'=>'12:30'),array('start_s'=>'11:00', 'end_s'=>'12:30'),array('start_s'=>'14:00', 'end_s'=>'12:30'),array('start_s'=>'16:00', 'end_s'=>'12:30'),
);
$array = array();
foreach ($list as $k => $v) {// 时间转换成秒$start = explode(':', $v['start_s']);$end = explode(':', $v['end_s']);$start_time = $start[0]*3600+$start[1]*60;$end_time = $end[0]*3600+$end[1]*60;// 更新进新列表$array[] = array('start_s'=>$start_time, 'end_s'=>$end_time, );// 先判断有没有跨天if ($v['start_s'] > $v['end_s']) {$str = '存在跨天时间段:';$str .= '开始时间:'.$v['start_s'];$str .= ' 结束时间:'.$v['end_s'];die($str);}
}
// 判断天数重叠
foreach ($array as $k => $v) {foreach ($array as $kk => $vv) {if ($kk != $k) {// 存在跨天时间段if (is_time_cross($v['start_s'], $v['end_s'], $vv['start_s'], $vv['end_s'])) {$str = '存在重叠时间段:';$str .= '开始时间:'.date('H:i', $v['start_s']);$str .= ' 结束时间:'.date('H:i', $v['end_s']);$str .= ' 《 对应 》 开始时间:'.date('H:i', $vv['start_s']);$str .= ' 结束时间:'.date('H:i', $vv['end_s']);die($str);}}}
}
http://www.lryc.cn/news/272251.html

相关文章:

  • atoi函数的模拟实现
  • 编程笔记 html5cssjs 009 HTML链接
  • Vue实现导出Excel表格,提示“文件已损坏,无法打开”的解决方法
  • 分发糖果,Java经典算法编程实战。
  • 鸿蒙原生应用再添新丁!中国移动 入局鸿蒙
  • 一个人能不能快速搭建一套微服务环境
  • 计算机毕业设计------经贸车协小程序
  • 数据结构OJ实验11-拓扑排序与最短路径
  • 你的第一个JavaScript程序
  • CMake入门教程【基础篇】列表操作(list)
  • 普中STM32-PZ6806L开发板(HAL库函数实现-读取内部温度)
  • 普中STM32-PZ6806L开发板(使用过程中的问题收集)
  • 八股文打卡day12——计算机网络(12)
  • 自然语言处理2——轻松入门情感分析 - Python实战指南
  • pygame学习(一)——pygame库的导包、初始化、窗口的设置、打印文字
  • 前端面试
  • Spring Boot快速搭建一个简易商城项目【完成登录功能且优化】
  • KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models
  • 使用anaconda创建爬虫spyder工程
  • 网络通信(7)-TCP协议解析
  • win32 WM_MENUSELECT消息学习
  • Java学习苦旅(十六)——List
  • python爬虫实现获取招聘信息
  • 模块电源(七):LDO 应用
  • Redis命令---Hash(哈希)篇 (超全)
  • Objects are not valid as a React child (found: object with keys {name}).
  • nodejs业务分层如何写后端接口
  • Windows 7 虚拟机的安装以及解决安装VMVMware tools问题
  • [足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器
  • SSM养老院综合服务系统----计算机毕业设计