Функция date_i18n() в WordPress: использование и примеры

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, делая ваши приложения более удобными для пользователей разных локалей.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *