DateTime期间问题

时间:2016-09-13 07:46:46

标签: php datetime

我在php中的日期时间有奇怪的行为。 由于某种原因,此代码产生错误的结果:

$period = new DatePeriod(
            new DateTime('2017-03-20'),
            DateInterval::createFromDateString('1 day'),
            new DateTime('2017-03-31')
        );
foreach($period as $dt){
  $a[] = $dt->format('Y-m-d');
}

所以预期的结果是20到31岁,但事实并非如此。这是实际结果:

Array
(
    [0] => 2017-03-20
    [1] => 2017-03-21
    [2] => 2017-03-22
    [3] => 2017-03-23
    [4] => 2017-03-24
    [5] => 2017-03-25
    [6] => 2017-03-26
    [7] => 2017-03-27
    [8] => 2017-03-28
    [9] => 2017-03-29
    [10] => 2017-03-30
)

那么我在这里缺少什么,或者那是一个php bug?

1 个答案:

答案 0 :(得分:4)

关于DatePeriod::

的官方PhP文档this user statement之后
  

[...]使用DateTime方法包含结束日期的示例'修改'

这个类似乎忽略了结束日期。您需要修改结束日期以包含此差距(+1单位,在您的情况下为+1天)。