date_i18n

函数
date_i18n ( $format, $timestamp_with_offset = false, $gmt = false )
参数
  • (string) $format Format to display the date.
    Required:
  • (int|bool) $timestamp_with_offset Optional. A sum of Unix timestamp and timezone offset in seconds. Default false.
    Required:
    Default: false
  • (bool) $gmt Optional. Whether to use GMT timezone. Only applies if timestamp is not provided. Default false.
    Required:
    Default: false
返回值
  • (string) The date, translated if locale specifies it.
定义位置
相关方法
update_optionupdate_nagwp_update_linkvalidate_pluginwp_update_plugin
引入
0.71
弃用
-

date_i18n: 这个函数根据WordPress的日期和时间设置返回当前的日期和时间格式,并翻译成用户的语言。它对于在WordPress网站上以符合用户偏好的格式显示日期和时间很有用。

检索本地化格式的日期,基于Unix时间戳和时区偏移量(秒)的总和。

如果locale指定了locale的月份和星期,那么locale将接管日期的格式。如果不是这样,那么日期格式字符串将被替代使用。

请注意,由于WP通常用`strtotime()`生成时间戳和偏移量的方式,它意味着偏移量是在_当前_时间添加的,而不是在时间戳代表的时间。存储这样的时间戳或以不同的方式计算它们将导致无效的输出。

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;
}

常见问题

FAQs
查看更多 >