PHP: Return 日期范围的开始日期和结束日期
PHP: Return date time start and date time end for a date range
我需要return给定范围内每个日期的日期时间开始和日期时间结束:
输入为:
$start = '2010-11-07 10:00:00';
$end = '2010-11-09 19:00:00';
预期输出为:
Array
(
Array
(
'2010-11-07',
'2010-11-07 10:00:00' ,
'2010-11-08 00:00:00'
)
Array
(
'2010-11-08' ,
'2010-11-08 00:00:00' ,
'2010-11-09 00:00:00'
)
Array
(
'2010-11-09' ,
'2010-11-09 00:00:00' ,
'2010-11-09 19:00:00'
)
)
我设法使用此线程将时间范围划分为不同的日子:
但是,我无法获取每个日期的开始和结束时间。任何帮助将不胜感激!
这是我的代码 PHP Fiddle。
解决这个问题的一种方法是简单地遍历 start/end 日期之间的日子:
function getRange($start, $end) {
$range = [];
$start_date = \DateTime::createFromFormat('Y-m-d H:i:s', $start);
$end_date = \DateTime::createFromFormat('Y-m-d H:i:s', $end);
$diff = $end_date->diff($start_date);
for($i = 0; $i <= $diff->days; $i++) {
$event_end = clone $start_date;
$event_end->add(new \DateInterval("P1D"));
if ($event_end > $end_date) {
$range[] = [
$start_date->format('Y-m-d'),
$start_date->format('Y-m-d 00:00:00'),
$end_date->format('Y-m-d H:i:s'),
];
break;
}
$range[] = [
$start_date->format('Y-m-d'),
$i > 0 ? $start_date->format('Y-m-d 00:00:00') : $start_date->format('Y-m-d H:i:s'),
$event_end->format('Y-m-d 00:00:00')
];
$start_date->add(new \DateInterval("P1D"));
}
return $range;
}
在此处查看 运行:https://3v4l.org/e85OM
我需要return给定范围内每个日期的日期时间开始和日期时间结束:
输入为:
$start = '2010-11-07 10:00:00';
$end = '2010-11-09 19:00:00';
预期输出为:
Array
(
Array
(
'2010-11-07',
'2010-11-07 10:00:00' ,
'2010-11-08 00:00:00'
)
Array
(
'2010-11-08' ,
'2010-11-08 00:00:00' ,
'2010-11-09 00:00:00'
)
Array
(
'2010-11-09' ,
'2010-11-09 00:00:00' ,
'2010-11-09 19:00:00'
)
)
我设法使用此线程将时间范围划分为不同的日子:
但是,我无法获取每个日期的开始和结束时间。任何帮助将不胜感激!
这是我的代码 PHP Fiddle。
解决这个问题的一种方法是简单地遍历 start/end 日期之间的日子:
function getRange($start, $end) {
$range = [];
$start_date = \DateTime::createFromFormat('Y-m-d H:i:s', $start);
$end_date = \DateTime::createFromFormat('Y-m-d H:i:s', $end);
$diff = $end_date->diff($start_date);
for($i = 0; $i <= $diff->days; $i++) {
$event_end = clone $start_date;
$event_end->add(new \DateInterval("P1D"));
if ($event_end > $end_date) {
$range[] = [
$start_date->format('Y-m-d'),
$start_date->format('Y-m-d 00:00:00'),
$end_date->format('Y-m-d H:i:s'),
];
break;
}
$range[] = [
$start_date->format('Y-m-d'),
$i > 0 ? $start_date->format('Y-m-d 00:00:00') : $start_date->format('Y-m-d H:i:s'),
$event_end->format('Y-m-d 00:00:00')
];
$start_date->add(new \DateInterval("P1D"));
}
return $range;
}
在此处查看 运行:https://3v4l.org/e85OM