Как вывести переменную времени в мой часовой пояс? - PullRequest
0 голосов
/ 11 ноября 2018

В настоящее время я использую 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');

Часовой пояс даты по умолчанию действительно изменяет часовой пояс (последнее эхо) Однако то, что я хочу изменить, - это вывод зарегистрированного $. (что является сохраненным временем).

Как глобально изменить способ отображения времени при вызове? Другими словами, если я вызову дату / время через плагин или напрямую, это всегда даст мне вывод America / Los_Angeles.

Спасибо заранее. Я нуб.

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете использовать 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')) ) );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...