Итак, у меня есть следующий код, который я нашел где-то еще в SO, чтобы узнать разницу между двумя датами.
$datetime1 = new DateTime('2018-07-11');
$datetime2 = new DateTime('2018-07-13');
$diff = $datetime1->diff($datetime2);
У меня нет проблем с этим, потому что он работает хорошо, но когда я пытаюсь применить его самостоятельно, не вижу разницы, или разница равна 0.
$datetime1 = new DateTime($date_today);//format is 2018-07-01, string format
$datetime2 = new DateTime($date);//format is 2018-07-31, string format
$diff= $datetime1->diff($datetime2);
log::info($diff->format('%d'));
Выход для этого - 0, который должен быть 30. Вы можете мне помочь с этим, пожалуйста?
Какая дата у этого 2018-07-0?
Нет, DateTime заменит 2018-07-0 на 2018-06-30
И где в состоянии календаря вы когда-нибудь видели нулевую часть месяца?
@RiggsFolly Это сразу после 31 февраля, и PHP также с радостью перенесет это в следующий месяц.
@RiggsFolly Это просто опечатка. Должен быть 01, думал уже редактировал.






log::info($diff->format('%a'));
это решение
Смотрите здесь в песочнице php: http://sandbox.onlinephpfunctions.com/code/32bcea357af442f92a1875e1669af6f01973df6d
$diff - это объект DateInterval, который имеет другие параметры DateInterval :: format.
Этот
2018-07-0, не являющийся действительной датой, может быть частью проблемы или просто плохим комментарием.