Недавно я столкнулся с простым DateInterval
вопрос. Класс не пересчитывает свои свойства после того, как я создал DateInterval
объект с огромным значением секунд следующим образом:
$interval = new DateInterval('PT6685071S');
echo $interval->format("%m months %d days %H hours %i minutes %s seconds");
Выход становится:
0 месяцев 0 дней 00 часов 0 минут 6685071 секунд
Как сделать так, чтобы он отображался так:
2 месяца 16 дней 8 часов 57 минут 51 секунда
без деления секунд на 60, минут на 60 и т. д.?
(надеюсь, мой расчет верен)
Это может быть достигнуто с помощью класса DateTime
Использование:
echo secondsToTime(1640467);
18 дней, 23 часа, 41 минута и 7 секунд
function secondsToTime($seconds) {
$dtF = new DateTime("@0");
$dtT = new DateTime("@$seconds");
return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}
Других решений пока нет …