/**

* 获取到两个重合时段的最大和最小

* [get_min_max description]

* @author jimswoo 20161016 ]>

* @param  [type] $a [description]

* @param  [type] $b [description]

* @return [type]    [description]

*/

function get_min_max($a,$b){

$sort = array_merge($a,$b);

array_multisort($sort);

$end = array_pop($sort);

return $sort[0].'#'.$end;//array($sort[0],$end);

}

/**

* [is_repeat description]

* 是否两个时段重合

* @author jimswoo 20161016 ]>

* @param  [type]  $target  [description]

* @param  [type]  $compare [description]

* @param  boolean $run     [description]

* @return boolean          [description]

*/

function is_repeat($target,$compare,$run = true){

$min = $compare[0];

$max = $compare[1];

$res = false;

foreach($target as $v){

if(($v >= $min && $v <= $max)) {

$res = true;

break;

}

}

if($run && !$res){

$res = is_repeat($compare,$target,false);

}

return $res;

}

/**

* 把时段的值从字符串转为数组

* @author jimswoo 20161016 ]>

* [changeValue description]

* @param  [type] $val [description]

* @return [type]      [description]

*/

function changeValue($val){

$val = array_unique($val);

$list = array();

foreach($val as $v){

$list[] = explode('#',$v);

}

return $list;

}

/**

* [main_run description]

* 比较方法

* @author jimswoo 20161016 ]>

* @param  [type] $all [description]

* @return [type]      [description]

*/

function main_run($all){

$leng = count($all);

$result = $un = array();

$count = 0;

for($i = 0;$i

for($j = $leng - 1;$j >= $i;$j--){

if(is_repeat($all[$j],$all[$i])){

if($j != $i){

$count++;

}else{

$un[] = $all[$i][0].'#'.$all[$i][1];

}

$result[] = get_min_max($all[$j],$all[$i]);

$all[$i] = $all[$j] = array(-3,-2);

}else{

$un[] = $all[$i][0].'#'.$all[$i][1];

}

}

}

$result = array_merge($result,$un);

if($count == 0){

$result = $all;

}

return array('c'=>$count,'v'=>$result);

}

/**

* [getComfirmTimes description]

* @author jimswoo 20161016 ]>

* @param  [type] $all [description] 格式array(array(2,4),array(34,332))

* @return [type]      [description]

*/

function getComfirmTimes($all){

if(empty($all)){

return array();

}

$c=0;

do{

$is_end = main_run($all);

if($is_end['c'] != 0){

//var_dump($all);

$all = changeValue($is_end['v']);

}else{

foreach($all as $k=>$v){

if($v[0] == -3){

unset($all[$k]);

}

}

}

$c++;

}while($is_end['c'] != 0 && $c < 120);

return $all;

}

$test = array(

array(2,6),

array(5,9),

array(10,11),

array(15,20),

array(22,23),

array(13,19)

);

$res = getComfirmTimes($test);

print_r($res);

?>

php 时间 拼接,PHP关于时间的时段的重合、 整合的方法相关推荐

  1. 热议!“建议放学时间与父母下班时间一致”,网友:陪我一起996吗?

    随着疫情的稳定,新学期开始,各地中小学学生开始重返校园,开启新一学期的学习生活. 这可让习惯了过去一年在家远程上课的家长们又开始头痛了. 为什么?因为孩子放学和家长下班时间,二者之间存在一段尴尬的&q ...

  2. UTC时间转换为当前时区时间

    发现问题:后台传过来的时间与当前时区时间不一样,经比对发现其为UTC时间 需求:展示的应该是当前时区的时间 解决方法:moment插件 1.安装 npm install moment --save 2 ...

  3. 认识时间纬度,管理时间,成就高效人生

    我们身处在无尽向前的时间纬度中,除了在看视频的时候可以随意调节时间的快慢外,在真实的世界中,它正裹挟着我们,随着时钟缓慢而无情的旋转,而我们对于自己人生的进度条,好似无能为力. 在真实的三维世界,我们 ...

  4. antd DatePicker 时间控件 限制选择当天之前时间,今天之前时间

    根据官方提供的disabledDate属性来设置可选区间,new Date 可以替换成固定时间节点如:newDate(1992-01-01) disabledDate = (current) => ...

  5. Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)

    1. 概要说明 import "time" time 包提供了时间的显示和测量用的函数.日历的计算采用的是公历. Go 提供以下几种时间类型: 时间点 Time 时间段 Durat ...

  6. mysql 数据表 时间自动_MySQL数据库时间设置自动添加时间和自动更新时间

    MySQL字段中设置时间字段自动添加创建时间和自动更新时间设置, 设置字段类型为:timestamp 默认值设置为current_timestamp(), 更新时间字段字段类型为:timestamp ...

  7. 实现计时、时钟,实时获取当前年月日时分秒,记录时间(获取当前的时间,开始计时,计时过程相当于你的电脑时钟)0000年00月00日 00:00:00

    <!doctype html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...

    时间轴页面,是工作型PPT中常见的页面之一.个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程. 但是,很多人在制作时间轴页面时,往往是这样的效果: 只有几行字和一根线, ...

  9. python中将HTTP头部中的GMT时间转换成datetime时间格式

    原文: https://blog.csdn.net/zoulonglong/article/details/80585716 需求背景:目前在做接口的自动化测试平台,由于接口用例执行后返回的结果中的时 ...

  10. R语言ggplot2可视化在X轴上可视化时间标签实战:可视化时间标签、对时间标签进行旋转

    R语言ggplot2可视化在X轴上可视化时间标签实战:可视化时间标签.对时间标签进行旋转 目录

最新文章

  1. 算法工程师落地_模型的更新升级能力
  2. java SE8 和 jdk1.8的关系 java版本号
  3. WPF DatePicker默认显示当前日期,格式化为年月日(转)
  4. rabbitmq 在centos下的安装
  5. 带有示例的Python date strftime()方法
  6. 如何打造园本特色_如何确立办园特色
  7. 接口测试用例设计思路_基于python语言的接口自动化demo小实战
  8. 一种PLC RS485 Modbus RTU无线联网的解决方案
  9. 配置私有仓库(使用registry镜像搭建一个私有仓库)
  10. 苹果成美国2021年最赚钱公司;用户已收到 HarmonyOS 2 正式版推送;Firefox 89.0 发布|极客头条...
  11. json 后台传前台
  12. canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
  13. EventUtil——跨浏览器的事件对象
  14. win10系统打开/解压缩文件时出现文件名乱码
  15. Bada学习-(二十九)bada测试服务器
  16. 大二暑假立秋学习总结
  17. vba formula 公式的引用
  18. JanusGraph入坑笔记(五)- GraphTraversal (Vertex centric)
  19. 磁场检测传感器的设计
  20. BP神经网络原理简单介绍以及公式推导(矩阵形式和分量形式)

热门文章

  1. 如何判断数据库中是否已经存在某个临时表?
  2. .NET(C#)代码性能优化
  3. 心有多高 未来就有多远
  4. 拿过3个重点、8个面上的专家:申请国家基金心得与体会
  5. 20191222每日一句
  6. 数据是否服从正态分布
  7. Atitit 数据分析之道 attilax著 1. 数据分析的目的 2 1.1. 描述型:发生了什么?可视化仪表盘化很重要。 3 1.2. 2. 诊断型:为什么会发生?结合历史记录 3 1.3. 3
  8. atitit.atiHtmlUi web组件化方案与规范v1
  9. atitit。mssql sql server 转换mysql 及 分页sql ast的搭建
  10. paip.QQ音乐导出歌单总结