DATE_I18N() │ WP 0.71
Функция date_i18n()
позволяет получить дату в локализованном формате, основываясь на временной метке.
Описание функции
Если локализация определяет месяц и день недели, то формат даты будет соответствовать выбранной локали. В противном случае будет использоваться указанный формат даты.
Важно отметить, что обычно WordPress вычисляет временную метку и смещение с помощью функции strtotime()
, что подразумевает добавление смещения к текущему времени, а не ко времени, которое представляет временная метка. Это может привести к ошибочному выводу, если хранятся или вычисляются такие временные метки по-другому.
Используется в:
wp_date()
Хуки от функции
date_i18n
Возвращаемое значение
Строка. Дата, переведенная на текущий язык, если это указано в локали.
Синтаксис
date_i18n( $format, $timestamp_with_offset, $gmt );
Параметры
- $format (string, обязательный): Формат отображения даты.
- $timestamp_with_offset (int|true|false): Сумма временной метки Unix и смещения часового пояса в секундах. По умолчанию:
false
. - $gmt (true|false): Указывает, использовать ли временную зону GMT. Применяется только если временная метка не указана. По умолчанию:
false
.
Примеры использования
Пример 1: Локализация функции PHP date()
в WordPress
// Текущее время
echo date_i18n( 'j F Y H:i:s', false );
// Выводит: 12 Aug 2018 02:08:59
echo date_i18n( 'j F Y H:i:s', false, true );
// Выводит: August 11, 2018 21:08:59 - GMT работает, потому что время не указано
Пример 2: Специфическое время
echo date_i18n( 'j M Y H:i:s', strtotime('1999-11-15' ) );
// Выводит: Nov 15, 1999 00:11:00
echo date_i18n( 'j M Y H:i:s', strtotime('1999-11-15' ), 1 );
// Выводит: Nov 15, 1999 00:11:00 - GMT не работает, потому что указано время
Примечания по использованию функции
Функция date_i18n()
работает как обычная функция PHP date()
, но также переводит названия месяцев и дней недели в соответствии с текущей локалью сайта. Вы можете заменить вызов функции date()
на date_i18n()
, используя те же аргументы.
Функция date_i18n()
также принимает дополнительный аргумент, который следует использовать только в случае, если вы указываете время в GMT (UTC), а не местное время.
Ядро WordPress содержит необходимые средства для перевода месяцев и дней, поэтому эта функция не требует указания текстового домена при использовании в плагинах и темах. Переводы всегда будут включены в языковые пакеты ядра.
Обратите внимание, что "формат" не будет преобразован в локализованный, если вы укажете его вручную. Если вам нужен локализованный формат, используйте get_option('date_format')
, чтобы получить формат, установленный пользователем в настройках, или оберните свой предопределенный формат в __()
, чтобы позволить переводчикам адаптировать дату в соответствующий локализованный формат.
Чтение как использовать и получать дату и время в одной строке
Чтобы вывести и дату, и время в одной строке, просто соедините два параметра:
$format = get_option('date_format') .' @ '. get_option('time_format');
$datetime = date_i18n( $format );
var_dump( $datetime ); // Пример вывода: March 3, 2018 @ 7:18 am
Изменение часового пояса
Если вы находитесь в часовом поясе UTC+10 и хотите преобразовать другое время в свой часовой пояс, используйте следующую конструкцию:
$timestamp_with_offset = strtotime( '2020-05-06 23:42:59' ) + get_option( 'gmt_offset', 0 ) * HOUR_IN_SECONDS;
$converted_date = date_i18n( get_option( 'date_format' ), $timestamp_with_offset );
Это позволит вам получить дату в вашем часовом поясе.
Вывод даты и времени установки
Чтобы показать дату и время установки в формате по умолчанию, используйте PHP:
$format = get_option('date_format') . ' ' . get_option('time_format');
$check_stamp = date_i18n( $format ); // Пример вывода: February 25, 2022 11:36 pm
Если выводится неверно, вы можете изменить настройки в разделе «Настройки > Общие».
Изменения в функции
- С версии 0.71 – введена.
- С версии 5.3.0 – преобразована в обертку для
wp_date()
.
Код функции
function date_i18n( $format, $timestamp_with_offset = false, $gmt = false ) {
$timestamp = $timestamp_with_offset;
// Если временная метка не указана, используется текущее время (с учетом смещения, если $gmt = true).
if ( ! is_numeric( $timestamp ) ) {
$timestamp = current_time( 'timestamp', $gmt );
}
// Логика преобразования временной метки в нужный формат
// ... (основной код функции, как в оригинале)
return $date;
}
Эта функция позволяет гибко работать с датами и временем в ваших проектах WordPress, делая ваши приложения более удобными для пользователей разных локалей.