我在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?
答案 0 :(得分:4)
关于DatePeriod::
[...]使用DateTime方法包含结束日期的示例'修改'
这个类似乎忽略了结束日期。您需要修改结束日期以包含此差距(+1单位,在您的情况下为+1天)。