Php 日期时间段问题

Php 日期时间段问题,php,datetime,Php,Datetime,我对php中的datetime有奇怪的行为。 由于某些原因,此代码会产生错误的结果: $period = new DatePeriod( new DateTime('2017-03-20'), DateInterval::createFromDateString('1 day'), new DateTime('2017-03-31') ); foreach($period as $dt){ $a[] =

我对php中的datetime有奇怪的行为。 由于某些原因,此代码会产生错误的结果:

$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错误?

以下是关于DatePeriod的官方php文档:

[…]使用DateTime方法“modify”包含结束日期的示例


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

结束日期不包括在期间内。这就是它的工作原理。