date_i18n()
最后更新于:2021-11-25 23:04:01
date_i18n( string$format, int|bool$timestamp_with_offset=false, bool$gmt=false)Retrieves the date in localized format, based on a sum of Unix timestamp and timezone offset in seconds.
参数
- $format
-
(string) (Required) Format to display the date.
- $timestamp_with_offset
-
(int|bool) (Optional) A sum of Unix timestamp and timezone offset in seconds.
Default value: false
- $gmt
-
(bool) (Optional) Whether to use GMT timezone. Only applies if timestamp is not provided.
Default value: false
响应
(string) The date, translated if locale specifies it.
源文件
文件: gc-includes/functions.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 = gc_date( $format, null, new DateTimeZone( 'UTC' ) );
} elseif ( false === $timestamp_with_offset ) { // Current time in site's timezone.
$date = gc_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 = gc_timezone();
$datetime = date_create( $local_time, $timezone );
$date = gc_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;
}