WordPress at a glance

date_i18n() WP 1.0

Retrieve the date in localized format, based on timestamp.

If the locale specifies the locale month and weekday, then the locale will take over the format for the date. If it isn't, then the date format string will be used instead.

Note that due to the way WP typically generates a sum of timestamp and offset with strtotime(), it implies offset added at a _current_ time, not at the time the timestamp represents. Storing such timestamps or calculating them differently will lead to invalid output.

Возвращает

String. The date, translated if locale specifies it.

Works based on: wp_date()
Hooks from the function

Usage

date_i18n( $format, $timestamp_with_offset, $gmt );
$format(string) (required)
Format to display the date.
$timestamp_with_offset(int/true/false)
A sum of Unix timestamp and timezone offset in seconds.
Default: false
$gmt(true/false)
Whether to use GMT timezone. Only applies if timestamp is not provided.
Default: false

Notes

  • Global. WP_Locale. $wp_locale WordPress date and time locale object.

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

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

Code of date_i18n() WP 5.5.1

wp-includes/functions.php
<?php
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 ) ) {
		$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;
}

Related Functions

From tag: date time

More from tag: localize (l10n i18n Internationalization localization)

More from category: Localization

No comments
    Log In . Register