Библиотека PHP для создания удобных относительных временных меток

Я ищу библиотеку PHP, которая генерирует удобные для пользователя представления о времени – например, «два часа назад», когда метка времени – это time() - 2 * 3600 .

Есть несколько существующих вопросов с ответами и сообщениями в блоге ( 1 , 2 , 3 ), но все они содержат только фрагменты кода, а не библиотеку, которую я могу установить и обновить.

У Django есть один , у Python также есть отдельная библиотека, у Javascript есть несколько ( 1 , 2 , 3 ) тоже – где библиотека PHP?


Библиотека должна иметь следующее:

  • документация
  • PEAR устанавливается
  • регулярные релизы
  • (необязательно) переводы

Поскольку не было никакой библиотеки, я сделал ее сам и включил ее в PEAR:

Date_HumanDiff , http://pear.php.net/package/Date_HumanDiff

Код находится по адресу http://github.com/pear/Date_HumanDiff

Я знаю, что у Коханы есть один, вы можете легко его переносить.

Функция называется fuzzy_span() .

См. http://kohanaframework.org/3.3/guide-api/Date#fuzzy_span

Класс Kohana Date предоставляет для этого метод fuzzy_span() . Но он не может ответить вам точные значения, такие как «10 минут»,

Попробуйте этот код:

 $current_date_time_get_updated_on_date_format = ''; function get_updated_on_date_format($dt_updated, $prefix = 'Updated ', $at = 'at ') { global $current_date_time_get_updated_on_date_format; if ($current_date_time_get_updated_on_date_format == '') { $current_date_time_get_updated_on_date_format = now(); } $i_second_now = strtotime($current_date_time_get_updated_on_date_format); $i_second_dt_updated = strtotime($dt_updated); $i_second_diff = $i_second_now - $i_second_dt_updated; $s_return_date_format = ''; if ($i_second_diff < 0) { // Developers Uploading Time, Time Zone Gap Patch $s_return_date_format = $prefix . $at . date('g:ia \o\n F jS, Y', strtotime($dt_updated)); } else if ($i_second_diff < 60) { $s_return_date_format = $prefix . $i_second_diff . ' seconds ago '; } elseif ($i_second_diff < (60 * 60)) { $s_return_date_format = $prefix . round(($i_second_diff / 60), 0) . ' minitues ago '; } elseif ($i_second_diff < (60 * 60 * 24)) { $s_return_date_format = $prefix . round(($i_second_diff / (60 * 60)), 0) . ' hours ago '; } else { $s_return_date_format = $prefix . $at . date('g:ia \o\n F jS, Y', strtotime($dt_updated)); } return $s_return_date_format; } function now() { // it should extract database time in this format 'YYYY-MM-DD HH:MM:SS' return mysql_now_value; }