WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

date_i18n()WP 0.71

Получает локализованную дату (переведенную на текущий язык) из переданной метки времени unix.

Если в выводимой дате используется формат с месяцем или неделей в виде строки, то функция попытается перевести их на текущий язык. В остальных случаях - это аналог date() в PHP.

Эта функция является оберткой для PHP функции date(), которая локализует результат.

Рекомендуется использовать более новую функцию wp_date(), вместо этой функции.

i18n - это сокращенное слово I{nternationalizatio}n (18 букв между первой и последней буквой).

Читайте также: Date/Time в WordPress.

Работает на основе: wp_date()
Хуки из функции

Возвращает

Строку. Локализованную дату.

Использование

date_i18n( $format, $timestamp_with_offset, $gmt );
$format(строка) (обязательный)
Формат в котором выводить дату, пример: F j, Y - Ноябрь 6, 2010. Полный список форматов.
$timestamp_with_offset(число)
Метка времени Unix. По умолчанию используется текущая метка time() (если $gmt=true) или current_time('timestamp') (если $gmt=false).
По умолчанию: false
$gmt(логический)

Нужно ли использовать GMT зону.

  • true - устанавливать часовой пояс равный времени по Гринвичу (‎UTC+0).
  • false - устанавливать часовой пояс по настройкам сайта.

Работает только если не указать $unixtimestamp, что логично, потому что если мы указываем метку времени, то скрипт не может угадать какая там временная зона и на сколько нужно её сдвинуть чтобы получить нужный результат. $gmt нужен, когда метка времени не указывается (ставится false) и берется текущее время...

По умолчанию: false

Примеры

0

#1 Локализация php функции date() в WordPress

Демонстрация работы функции:

// текущее время
echo date_i18n( 'j F Y H:i:s', false );       // 12 августа 2018 02:08:59
echo date_i18n( 'j F Y H:i:s', false, true ); // 11 августа 2018 21:08:59 - GMT работает, потому что время не указано

// указанное время
echo date_i18n( 'j M Y H:i:s', strtotime( '1999-11-15' ) );    // 15 Ноя 1999 00:11:00
echo date_i18n( 'j M Y H:i:s', strtotime( '1999-11-15' ), 1 ); // 15 Ноя 1999 00:11:00 - GMT не работает, потому что указана метка времени

Список изменений

С версии 0.71 Введена.
С версии 5.3.0 Converted into a wrapper for wp_date().

Код date_i18n() WP 6.4.3

function date_i18n( $format, $timestamp_with_offset = false, $gmt = false ) {
	$timestamp = $timestamp_with_offset;

	// If timestamp is omitted it should be current time (summed with offset, unless `$gmt` is true).
	if ( ! is_numeric( $timestamp ) ) {
		// phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp.Requested
		$timestamp = current_time( 'timestamp', $gmt );
	}

	/*
	 * This is a legacy implementation quirk that the returned timestamp is also with offset.
	 * Ideally this function should never be used to produce a timestamp.
	 */
	if ( 'U' === $format ) {
		$date = $timestamp;
	} elseif ( $gmt && false === $timestamp_with_offset ) { // Current time in UTC.
		$date = wp_date( $format, null, new DateTimeZone( 'UTC' ) );
	} elseif ( false === $timestamp_with_offset ) { // Current time in site's timezone.
		$date = wp_date( $format );
	} else {
		/*
		 * Timestamp with offset is typically produced by a UTC `strtotime()` call on an input without timezone.
		 * This is the best attempt to reverse that operation into a local time to use.
		 */
		$local_time = gmdate( 'Y-m-d H:i:s', $timestamp );
		$timezone   = wp_timezone();
		$datetime   = date_create( $local_time, $timezone );
		$date       = wp_date( $format, $datetime->getTimestamp(), $timezone );
	}

	/**
	 * Filters the date formatted based on the locale.
	 *
	 * @since 2.8.0
	 *
	 * @param string $date      Formatted date string.
	 * @param string $format    Format to display the date.
	 * @param int    $timestamp A sum of Unix timestamp and timezone offset in seconds.
	 *                          Might be without offset if input omitted timestamp but requested GMT.
	 * @param bool   $gmt       Whether to use GMT timezone. Only applies if timestamp was not provided.
	 *                          Default false.
	 */
	$date = apply_filters( 'date_i18n', $date, $format, $timestamp, $gmt );

	return $date;
}
8 комментариев
    Войти