如何将时间变量输出到我的时区?

时间:2018-11-11 06:24:27

标签: php wordpress date timezone echo

我当前正在使用Wordpress,并且user_registered的元素返回用户的注册时间。 我设置了正确的时区,但不知道如何获取user_registered输出以匹配我的当前时间。 到目前为止,这就是我所拥有的。

  date_default_timezone_set('America/Los_Angeles');


    $users = get_users();

    foreach( $users as $user ) {

        $udata = get_userdata( $user->ID );

        $registered = $udata->user_registered;

        printf( '%s member since %s<br>', $udata->data->display_name, date( "Y-m-d H:i:s", strtotime( $registered ) ) );
    }


echo('date below <br>');
echo date('Y-m-d H:i:s');

日期默认时区确实更改了时区(最后回显) 但是,我要更改的是$ registered的输出。 (这是存储的时间)。

如何全局更改呼叫时间的显示方式?换句话说,如果我通过插件或直接调用日期/时间戳,它将始终为我提供America / Los_Angeles的输出。

先谢谢了。我是菜鸟。

1 个答案:

答案 0 :(得分:1)

您可以使用DateTime函数。 http://php.net/manual/ro/datetime.settimezone.php

您的代码可以是这样的:

  date_default_timezone_set('America/Los_Angeles');


    $users = get_users();

    foreach( $users as $user ) {

        $udata = get_userdata( $user->ID );

        $registered = $udata->user_registered;

        $date = new DateTime(date( "Y-m-d H:i:s", strtotime( $registered )), new DateTimeZone('UTC')); //replace UTC with whatever is the timezone that the data was stored in
        $date->setTimezone(new DateTimeZone('America/Los_Angeles'));

        printf( '%s member since %s<br>', $udata->data->display_name,  $date->format('Y-m-d H:i:s') );
    }


echo('date below <br>');
echo date('Y-m-d H:i:s');

编辑:时区转换意味着指定了原始时区和目标时区。所以在这种情况下

date_default_timezone_set('America/Los_Angeles');

指定目标时区。但是您仍然需要为从数据库中检索到的值指定原始时区。 WP具有内置功能,可获取时区 get_option('timezone_string')

因此,在您的原始示例中,您可以使用一种更简单的方法,只需在strtotime()函数中指定原始时区即可。

  date_default_timezone_set('America/Los_Angeles');


    $users = get_users();

    foreach( $users as $user ) {

        $udata = get_userdata( $user->ID );

        $registered = $udata->user_registered;


        printf( '%s member since %s<br>', $udata->data->display_name, date( "Y-m-d H:i:s", strtotime( $registered ." ".get_option('timezone_string')) ) );
    }