当前浏览:首页 / WordPress函数 / date_i18n()

date_i18n( string $format, int|bool $timestamp_with_offset = false, bool $gmt = false )

根据Unix时间戳和时区偏移量之和(以秒为单位),以本地化格式检索日期

datemore...

i18n

  • date_i18n() 根据Unix时间戳和时区偏移量之和(以秒为单位),以本地化格式检索日期
  • number_format_i18n() 将浮点数转换为基于区域设置的格式

描述

如果区域设置指定了区域设置月份和工作日,则区域设置将接管日期的格式。如果不是,则将使用日期格式字符串。

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


参数

$format

(string)(必填) 格式化以显示日期。

$timestamp_with_offset

(int|bool)(可选) Unix时间戳和时区偏移量之和,以秒为单位。

默认值: false

$gmt

(bool)(可选) 是否使用GMT时区。仅当未提供时间戳时适用。

默认值: false


返回

(string) 日期,如果时区指定,则进行转换。



源码

查看源码 官方文档


更新日志

版本描述
5.3.0已转换为wp_date()的封装。
0.71开始引入

使用示例

  • 示例1

    date_i18n()函数的行为基本上与普通PHPdate()功能完全相同,只是它还将月份名称、工作日等内容转换为站点的当前区域设置。您可以使用date()通常使用的参数将date()的调用替换为date_i18n()调用。

    date_i18n()函数还接受一个附加参数,只有在指定GMT(UTC)时间而不是本地时间时才应使用该参数。

    WordPress的核心包括在核心代码中翻译月和日等所需的部分,因此该函数是一个翻译函数,在插件和主题中使用时不需要文本域。翻译将始终包含在核心语言包中。

    请注意,如果手动指定“format”,则不会将其转换为本地格式。如果需要本地化格式,那么你应该使用get_option('date_format'),如果你需要用户在设置->常规中设置的格式,这就是他们选择的格式。或者,您可以将预定义格式包装在__()中,以便翻译人员将日期调整为适当的本地格式。如果你这样做了,那么你还应该包括一个翻译注释,让翻译人员知道日期格式指的是什么以及在哪里使用,这样他们就可以准确地转换它。

  • 示例2

    重要的是要注意date_i18n()

    1. 没有与date()的完全功能奇偶校验,不支持所有格式(如shorthands);
    2. 不接受Unix时间戳(尽管记录为),预期值为“WordPress时间戳”(按时区偏移);
    3. 某些时区设置存在问题,例如数字设置;
    4. 在正常情况下不使用$gmt参数;

    必须仔细审核此函数的任何使用是否正确,尤其是在时区输出方面。

  • 示例3

    根据您的博客设置,您将看到以本地格式显示的日期,例如:1976年11月15日。

    <?php echo date_i18n( get_option( 'date_format' ), strtotime( '11/15-1976' ) ); ?>
     
  • 示例4
    $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)

    这是基于泰语,曼谷时区。

    更多的例子在[版主]上

  • 示例5

    要在单个字符串中同时获取日期和时间,请使用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'));
  • 示例6

    将另一个UTC时间转换为您自己的时区。
    假设您处于UTC+10时区,并希望将另一个时区转换为您的时区。您可以通过在date_18n()函数上添加+10来实现这一点。

    $converted_date = date_i18n( get_option( 'date_format' ), strtotime( '2019-06-07 00:35:32' . '+11' ) )
    谢谢

  • 示例7

    显示安装日期/时间的默认格式并查看其是否与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

    如果显示不正确,则可以转到设置>常规进行设置。

  • 示例8

    对于正确的时区:

    $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)