Я вычисляю разницу между двумя датами, используя DateTime(), и все работает нормально. Проблема в том, что я хочу, чтобы формат дней мог превышать полный месяц, поэтому 30/31 или выше.
$now = new DateTime();
$future_date = new DateTime($contest->expires_at);
$interval = $future_date->diff($now);
$enddate = $interval->format("%m month, %d days, %h hours, %i minutes");
Текущая проблема с этим заключается в том, что когда я не показываю месяцы, дни могут увеличиваться только до 30/31, и все, что сверх этого, будет перенесено, чтобы сделать новый месяц сбросом счетчика дней с оставшимися днями. Я хочу иметь возможность отображать 42 дня, когда разница составляет 6 недель с таким форматом:
$enddate = $interval->format("%d days, %h hours, %i minutes");
Есть ли быстрое решение для этого или мне нужно вручную преобразовать метку времени в секунды и использовать для этого мою собственную функцию с операторами модуля?
%a
вместо%d
(как описано в документации для формата) - php.net /manual/en/dateinterval.format.php - person Mark Baker   schedule 25.04.2013