我有日期Ymd格式的数组,可以是相隔一天的十个设定日期的任意组合.
这是全套:
2011-01-01,2011-01-02,2011-01-03,2011-01-04,2011-01-05,2011-01-06,2011-01-07,2011-01-08,2011- 01-09,2011-01-10
从该集创建的数组可以是日期的任意组合 - 所有数组,其中一个,一些连续,全部连续等.
我现在把它们打印得很漂亮.例如,这是一个可能的结果:
2011-01-02
2011-01-03
2011-01-04
2011-01-08
(实际打印的内容更像是"1月2日星期五......",但我们会坚持使用简单的日期字符串)
我想压缩它,以便如果连续三天或更多天,那些就成了一个范围,例如上面的例子会变成:
2011-01-02至2011-01-04
2011-01-08
最终会成为:
1月2日星期日 - 1月4日星期二
1月8日星期六
有没有办法循环并检查时差,创建范围的开始时间和结束时间,然后收集落后者?
是否有一种简单的方法可以获取1到15范围内的数字列表.并用一个短划线代替连续数字.
例如,如果您有以下数字:
1 2 3 5 6 7 10 12
它会输出
1 - 3, 5 - 7, 10, 12
我把这个数组作为输入:
$input=array('01-08-2018','02-08-2018','03-08-2018','05-08-2018','06-08-2018','08-08-2018','10-08-2018','11-08-2018','14-08-2018','01-09-2018','02-09-2018','10-09-2018');
Run Code Online (Sandbox Code Playgroud)
我需要预期数组:(如果连续日期中断,则需要单独的数组.)
$output=array(
array('01-08-2018','02-08-2018','03-08-2018'),
array('05-08-2018','06-08-2018'),
array('08-08-2018'),
array('10-08-2018','11-08-2018'),
array('14-08-2018'),
array('01-09-2018','02-09-2018'),
array('10-09-2018')
)
Run Code Online (Sandbox Code Playgroud)
注意:它应该适用于31-8-2018,1-9-2018这样的日期,它应该在同一个数组中.