请使用以下PHP代码:
<?php
$timezone = new DateTimeZone('UTC');
$startDate = new DateTime('2022-09-26T00:00:00', $timezone);
$endDate1 = new DateTime('2023-02-28T00:00:00', $timezone);
$endDate2 = new DateTime('2023-03-01T00:00:00', $timezone);
$interval1 = $endDate1->diff($startDate);
$interval2 = $endDate2->diff($startDate);
print_r($interval1);
print_r($interval2);
下面是输出结果:
DateInterval Object
(
[y] => 0
[m] => 5
[d] => 2
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 155
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
DateInterval Object
(
[y] => 0
[m] => 5
[d] => 5
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 156
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
谁能解释一下,为什么第一个间隔的y-m-d
是0-5-2,而days
计数是155,而第二个间隔的y-m-d
是0-5-5,即使只加了一天(实际上days
的计数是156)?
我试着将相同的代码移植到其他语言中(确切地说是JavaScript和python),第一个时间间隔的结果与PHP的相同:5个月零2天. 然而,第二个间隔的结果是5个月零3天(正如我所期望的那样),而不是PHP所说的5个月零5天.