PHP Преобразование даты форматирования HTML

Дата публикации, возвращенная с Twitter. API Atom Feed как 2008-11-03T21: 30: 06Z, которая должна быть преобразована в «X секунд / минут / часов / дней назад» для отображения того, как давно были опубликованы твиттер-сообщения.

Думаете, это можно сделать с помощью функции php date (), используя значение DATE_ATOM?

Related of "PHP Преобразование даты форматирования HTML"

function time_since($your_timestamp) { $unix_timestamp = strtotime($your_timestamp); $seconds = time() - $unix_timestamp; $minutes = 0; $hours = 0; $days = 0; $weeks = 0; $months = 0; $years = 0; if ( $seconds == 0 ) $seconds = 1; if ( $seconds> 60 ) { $minutes = $seconds/60; } else { return add_s($seconds,'second'); } if ( $minutes >= 60 ) { $hours = $minutes/60; } else { return add_s($minutes,'minute'); } if ( $hours >= 24) { $days = $hours/24; } else { return add_s($hours,'hour'); } if ( $days >= 7 ) { $weeks = $days/7; } else { return add_s($days,'day'); } if ( $weeks >= 4 ) { $months = $weeks/4; } else { return add_s($weeks,'week'); } if ( $months>= 12 ) { $years = $months/12; return add_s($years,'year'); } else { return add_s($months,'month'); } } function add_s($num,$word) { $num = floor($num); if ( $num == 1 ) { return $num.' '.$word.' ago'; } else { return $num.' '.$word.'s ago'; } } echo time_since('2008-11-03T21:30:06Z'); 

strtotime будет обрабатывать этот формат даты, предоставляя вам временную метку unix. Затем вы можете следовать алгоритмам Как рассчитать относительное время? чтобы получить ваш результат.

Это легко использовать с помощью функции DateTime, представленной в PHP 5.2:

 $posted = new DateTime('2008-11-03T21:30:06Z'); $now = new DateTime(); $interval = $posted->diff($now); echo $interval->format('%a days'); // You can change this to be whatever format you like 

пример