Так что у меня есть этот код, чтобы определить разницу между текущим временем и значением поля datetime из базы данных.
Этот код дает странный вывод (примеры ниже) для дат, которые не в том же году.
$deadline = new DateTime($someDeadline, new DateTimeZone('CET'));
$time_now = new DateTime('NOW', new DateTimeZone('CET'));
$overdue_until = $time_now->diff($deadline);
echo $overdue_until->format('%R %d day/s, %h hours, %i minutes');
Пример результатов:
Понедельник 9 февраля 2015 05:28:23 PM получает разницу + 28 дней / с, 17 часов, 6 минут от текущего времени.
Среда, 14 января 2015 г. 11:28:43 + 2 дня / с, 10 часов, 34 минуты
%d
получает до 31 дня. После этого он сбрасывается в ноль и месяцы увеличиваются. Если вы хотите общее количество дней, если вам нужно использовать %a
echo $overdue_until->format('%R %a day/s, %h hours, %i minutes');
Других решений пока нет …