human_time_diff()
Визначає різницю між двома переданими мітками часу і повертає результат у зручному для читання форматі: 1 хвилина, 5 годин, 10 днів, 3 місяці, 1 рік (1 min, 5 hours, 10 days). Відносні дати.
Функції передається час у форматі timestamp (мітка часу Unix). Таку мітку можна отримати за допомогою функцій: get_post_time(‘U’) та інших функцій часу.
(дуже швидко) | 50000 разів – 0.12 сек
(дуже швидко) |
PHP 7.4.8, WP 5.6.1
Хуки з функції
Повертає
Строку
. Людсько-зрозумілу різницю часу.
Використання
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 години 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. |