我会尽量在一段时间内整天工作。一整天还是只有几个小时都没有关系。我当前使用DatePeriod的代码不适用于我。

例:

[start] => DateTime Object
    (
        [date] => 2014-01-27 22:40:40
        [timezone_type] => 1
        [timezone] => +00:00
    )

[end] => DateTime Object
    (
        [date] => 2014-01-28 17:40:40
        [timezone_type] => 1
        [timezone] => +00:00
    )

$interval = new DateInterval('P1D'); // 1Day Interval
$daterange = new DatePeriod($time['start'], $interval ,$time['end']);

$return['days'] = array();

foreach($daterange as $date){
    $return['days'][] = $date->format("Y-m-d");
}


我想得到

[0] => 2014-01-27
[1] => 2014-01-28


但是我只能得到

[0] => 2014-01-27


是否可以更改DatePeriod参数或其他内容?

最佳答案

DatePeriod对象忽略最后一个句点。您可以通过增加间隔时间来解决此问题:

$interval = new DateInterval('P1D');
$start->setTime(0, 0);
$end->setTime(0, 0)->add($interval);
$periods = new DatePeriod($start, $interval, $end);


demo

已更新:如果仅按天循环,则删除开始日期和结束日期的时间部分(设置为00:00:00)。

关于php - PHP DatePeriod不按预期返回2天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21282322/

10-12 21:43