Они одинаковые или разные
Они совершенно разные. Объективно говоря, 2 дня не всегда равны 48 часам .
Подумайте о пересечении дневной границы.
Например, 2019-04-07T02:00:00+1100
(AEDT -> AEST)
$twoDays = new DateInterval('P2D');
$fortyEightHours = new DateInterval('PT48H');
$ref = new DateTimeImmutable('2019-04-07T01:00:00',
new DateTimeZone('Australia/Melbourne'));
echo 'Reference: ', $ref->format('r'), PHP_EOL;
echo 'Plus 2 days: ', $ref->add($twoDays)->format('r'), PHP_EOL;
echo 'Plus 48 hours: ', $ref->add($fortyEightHours)->format('r'), PHP_EOL;
Это производит
Reference: Sun, 07 Apr 2019 01:00:00 +1100
Plus 2 days: Tue, 09 Apr 2019 01:00:00 +1000
Plus 48 hours: Tue, 09 Apr 2019 00:00:00 +1000
Обратите внимание, что HHVM по какой-то причине дает другой результат
Демо ~ https://3v4l.org/L4tKo
Этот список распространенных ложных данных, связанных с датой и временем, стоит проверить ~ https://github.com/kdeldycke/awesome-falsehood#dates-and-time
Стоит отметить, что использование одной и той же контрольной даты и манипулирование ею с помощью strtotime()
дает результаты, отличные от указанных выше.
Демо ~ https://3v4l.org/O6MTd
Я подозреваю, что это потому, что его расчеты относительного времени не такие нюансы, как DateInterval
.