Php 日期时间段问题
我对php中的datetime有奇怪的行为。 由于某些原因,此代码会产生错误的结果: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[] =
$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天。结束日期不包括在期间内。这就是它的工作原理。