描述
如果区域设置指定了区域设置月份和工作日,则区域设置将接管日期的格式。如果不是,则将使用日期格式字符串。
请注意,由于WP生成时间戳和偏移量之和的方式通常使用strtotime()
,它意味着在当前时间添加偏移量,而不是在时间戳表示的时间。存储此类时间戳或以不同方式计算它们将导致无效输出。
参数
- $format
-
(string)(必填) 格式化以显示日期。
- $timestamp_with_offset
-
(int|bool)(可选) Unix时间戳和时区偏移量之和,以秒为单位。
默认值: false
- $gmt
-
(bool)(可选) 是否使用GMT时区。仅当未提供时间戳时适用。
默认值: false
返回
(string) 日期,如果时区指定,则进行转换。
源码
更新日志
版本 | 描述 |
---|---|
5.3.0 | 已转换为wp_date()的封装。 |
0.71 | 开始引入 |
使用示例
date_i18n()
函数的行为基本上与普通PHPdate()
功能完全相同,只是它还将月份名称、工作日等内容转换为站点的当前区域设置。您可以使用date()
通常使用的参数将date()
的调用替换为date_i18n()
调用。date_i18n()
函数还接受一个附加参数,只有在指定GMT(UTC)时间而不是本地时间时才应使用该参数。WordPress的核心包括在核心代码中翻译月和日等所需的部分,因此该函数是一个翻译函数,在插件和主题中使用时不需要文本域。翻译将始终包含在核心语言包中。
请注意,如果手动指定“format”,则不会将其转换为本地格式。如果需要本地化格式,那么你应该使用
get_option('date_format')
,如果你需要用户在设置->常规中设置的格式,这就是他们选择的格式。或者,您可以将预定义格式包装在__()
中,以便翻译人员将日期调整为适当的本地格式。如果你这样做了,那么你还应该包括一个翻译注释,让翻译人员知道日期格式指的是什么以及在哪里使用,这样他们就可以准确地转换它。重要的是要注意
date_i18n()
:- 没有与
date()
的完全功能奇偶校验,不支持所有格式(如shorthands); - 不接受Unix时间戳(尽管记录为),预期值为“WordPress时间戳”(按时区偏移);
- 某些时区设置存在问题,例如数字设置;
- 在正常情况下不使用
$gmt
参数;
必须仔细审核此函数的任何使用是否正确,尤其是在时区输出方面。
- 没有与
根据您的博客设置,您将看到以本地格式显示的日期,例如:1976年11月15日。
<?php echo date_i18n( get_option( 'date_format' ), strtotime( '11/15-1976' ) ); ?>
$dt_gmt = '2018-12-03 00:00:00'; echo 'date_i18n GMT, gmt=false: ' . date_i18n($settings_datetime_format, strtotime($dt_gmt)) . '<br>'; echo 'date_i18n GMT, gmt=true: ' . date_i18n($settings_datetime_format, strtotime($dt_gmt), true) . '<br>';
结果:
date_i18n GMT, gmt=false: December 3, 2018 12:00 am
date_i18n GMT, gmt=true: December 3, 2018 12:00 am如果设置了第二个参数,则第三个参数无效。
根据WP设置(时区、格式)显示翻译后的日期/时间。
$unixtimestamp
参数必须像这样从GMT转换而来。$dt_gmt = '2018-12-03 00:00:00'; $dt = get_date_from_gmt($dt_gmt, 'Y-m-d H:i:s');// convert from GMT to local date/time based on WordPress time zone setting. echo date_i18n(get_option('date_format') . ' ' . get_option('time_format') . ' (P)', strtotime($dt));// get format from WordPress settings.
结果将是:
ธันวาคม 3, 2018 7:00 am (+07:00)
这是基于泰语,曼谷时区。
更多的例子在[版主]上
要在单个字符串中同时获取日期和时间,请使用
date_i18n
两次并使用分隔符。同时,您还可以检索在“常规设置”页面中设置的本地日期和时间格式。例如,返回:“March 3, 2018 @ 7:18 am”(在“常规设置”页面中为美国东部标准时间格式化):
$datetime = date_i18n(get_option('date_format'), current_time('timestamp')) .' @ '. date_i18n(get_option('time_format'), current_time('timestamp'));
将另一个UTC时间转换为您自己的时区。
假设您处于UTC+10时区,并希望将另一个时区转换为您的时区。您可以通过在date_18n()函数上添加+10来实现这一点。$converted_date = date_i18n( get_option( 'date_format' ), strtotime( '2019-06-07 00:35:32' . '+11' ) )
谢谢显示安装日期/时间的默认格式并查看其是否与i18n格式兼容的简单方法是使用PHP提取日期和时间:
$format = get_option('date_format') . ' ' . get_option('time_format'); $check_stamp = date_i18n($format, current_time('timestamp'));
通过回显显示
esc_html($check_stamp);
结果:February 25, 2022 11:36 pm
如果显示不正确,则可以转到设置>常规进行设置。
对于正确的时区:
$datetime = '2022-12-03 10:00:00'; date_i18n('d/m/Y H:i', strtotime( get_date_from_gmt( $datetime ) ) ); // return 03/12/2022 10:00 + (add or minus hours time zone)