human_time_diff()
Определяет разницу между двумя переданными метками времени и возвращает результат в формате удобном для чтения: 1 минута, 5 часов, 10 дней, 3 месяца, 1 год (1 min, 5 hours, 10 days). Относительные даты.
Функции передается время в формате timestamp (метка времени Unix). Такую метку можно получить с помощью функций: current_time('timestamp'), get_post_time('U') и других функций времени.
Хуки из функции
Возвращает
Строку
. Человеко-понятную разницу времени.
Использование
human_time_diff( $from, $to );
- $from(число) (обязательный)
- Метка времени Unix - время с которого будет считаться разница. Это может быть дата записи: get_post_time('U').
- $to(число)
- Метка времени Unix - время до которого будет считаться разница.
По умолчанию: 0 - time()
Примеры
#1 Прошло времени с момента публикации записи
Этот пример показывает как вывести время, которое прошло с момента публикации записи. Используется в Цикле WordPress:
$time_diff = human_time_diff( get_post_time('U'), current_time('timestamp') ); echo "Опубликовано $time_diff назад."; //> Опубликовано 5 лет назад.
Мы указали второй параметр current_time('timestamp') для того чтобы передать метку времени в одинаковом часовом поясе с get_the_time(). Часовой пояс указывается в настройках WordPress. Все встроенные функции WordPress ориентируются на часовой пояс, в том числе и current_time(). Поэтому если не указать второй параметр, то по умолчанию будет использована функция PHP time(), которая получит метку времени в стандартной зоне GMT без поправки на, указанный в настройках WP, часовой пояс, а значит результат может быть не правильным.
Другими словами, в human_time_diff() нужно указывать время в одном часовом поясе.
#2 Времена в стандарте GMT:
$human_time = human_time_diff( get_post_time( 'U', true ) ); echo "Опубликовано $human_time назад.";
Здесь get_post_time( 'U', true ), выведет значение поля записи post_date_gmt, а не post_date. А второй параметр мы не указали потому что time() по умолчанию получает gmt время.
#3 Прошло времени с момента публикации комментария
Этот пример аналогичный предыдущему, только для комментариев:
$time_diff = human_time_diff( get_comment_time('U'), current_time('timestamp') ); echo "Опубликовано $time_diff назад.";
#4 Ограничение работы функции до ближайшего месяца
По умолчанию human_time_diff() будет выводить и месяцы и годы. Ограничим разницу до месяца, если разница выше, то будем выводить время в обычном формате 5 января 2014
:
$time_diff = human_time_diff( get_comment_time('U'), current_time('timestamp') ); if( preg_match('~month|year|месяц|год|лет~iu', $time_diff ) ) echo "Опубликовано: ". get_the_time(); else echo "Опубликовано $time_diff назад.";
#5 Секунды в человеческом формате
Допустим нам надо превратить (конвертировать) секунды в понятный формат:
echo human_time_diff( 0, 600 ); // 10 min echo human_time_diff( 0, 6000 ); // 2 hour echo human_time_diff( 0, 60000 ); // 17 hour echo human_time_diff( 0, 600000 ); // 7 day
Список изменений
С версии 1.5.0 | Введена. |
С версии 5.3.0 | Added support for showing a difference in seconds. |