2015-03-05 2 views
0

Недавно я столкнулся с простой проблемой DateInterval. Класс не пересчитывать свои свойства после того, как я создал 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 Монт hs 16 дней 8 часов 57 минут 51 секунд

без деления секунд на 60, минут на 60 и т.д.?

(надеюсь, что мой расчет правильно)

ответ

2

Это может быть достигнуто с классом 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'); 
} 

sample demo

+0

Можете ли вы отметить это как ответ, если это действительно вам помогло? –

+0

уверен. это действительно помогает. – Raptor