Как вывести время регистрации пользователя в моем правильном часовом поясе?

Вопрос или проблема

В настоящее время я использую 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 член с %s<br>', $udata->data->display_name, date( "Y-m-d H:i:s", strtotime( $registered ) ) );
    }

echo('дата ниже <br>');
echo date('Y-m-d H:i:s');

Функция date_default_timezone_set действительно меняет часовой пояс (последний echo). Однако я хочу изменить вывод user_registered. (что является сохраненным временем).

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

Спасибо заранее. Я новичок. Обратите внимание, что echo и printf используются исключительно для временного отображения. Я хочу изменить способ отображения user_registered, когда он вызывается из плагина или напрямую.

Если можно использовать JavaScript или jQuery, я открыт для предложений.

Вы можете получить смещение времени из настроек WordPress, используя

get_option( 'gmt_offset' )

Поэтому я нашел самый простой метод сделать это:

gmdate( 'Y-m-d H:i:s', strtotime( get_option( 'gmt_offset' ) . ' hours', strtotime( $udata->user_registered ) ) )

На странице Настройки > Основные найдите раздел с заголовком Часовой пояс. Выберите город в том же часовом поясе, что и вы.

Ответ или решение

Конечно! Давайте разберемся, как вы можете отобразить время регистрации пользователя в правильном часовом поясе в WordPress.

Шаг 1: Убедитесь, что часовой пояс установлен правильно

Прежде всего, убедитесь, что ваш часовой пояс правильно настроен в настройках WordPress. Для этого перейдите в админпанель WordPress в Настройки > Общие и найдите раздел Часовой пояс. Выберите город, соответствующий вашему часовому поясу.

Шаг 2: Получение времени регистрации пользователя с учетом часового пояса

В вашем коде вы уже начали правильно использовать функцию strtotime() и date(), но вам нужно учесть часовой пояс, установленный в WordPress. Сделать это можно с использованием функции get_option('gmt_offset'), чтобы получить смещение от GMT, и применить его при выводе времени.

Вот пример того, как это можно сделать:

// Получаем пользователей
$users = get_users();

foreach ($users as $user) {
    $udata = get_userdata($user->ID);
    $registered = $udata->user_registered;

    // Получаем смещение в часах
    $gmt_offset = get_option('gmt_offset');

    // Применяем смещение и выводим время
    $local_time = gmdate('Y-m-d H:i:s', strtotime($registered) + ($gmt_offset * 3600));
    printf('%s зарегистрирован с %s<br>', esc_html($udata->data->display_name), esc_html($local_time));
}

// Временной вывод для текущего времени
echo('Текущее время: <br>');
echo esc_html(date('Y-m-d H:i:s'));

Объяснение кода

  1. Мы получаем всех пользователей через get_users().
  2. Для каждого пользователя извлекаем информацию о данных пользователя с помощью get_userdata().
  3. Получаем время регистрации через $udata->user_registered.
  4. Используя get_option('gmt_offset'), мы получаем смещение от GMT для нашего часового пояса и преобразуем его в секунды (умножаем на 3600).
  5. И, наконец, используем gmdate() для форматирования времени с учетом смещения.

Шаг 3: Глобальная настройка

Если вы хотите, чтобы время показывалось в правильном часовом поясе повсеместно (не только в вашем конкретном коде), в WordPress это уже реализовано через использование функций, таких как get_option('gmt_offset'). Таким образом, вы можете использовать представленный выше метод в любом месте вашего кода, чтобы показывать локализованное время регистрации пользователя.

Альтернатива с использованием JavaScript

Если вы хотите использовать JavaScript или jQuery, чтобы динамически отображать время, вы можете передать серверное время и затем корректировать его на стороне клиента с использованием библиотек, таких как Moment.js. Однако для вывода времени с учетом часового пояса server-side подход, как описано выше, будет проще и эффективнее.

Надеюсь, это поможет вам правильно настроить отображение времени регистрации пользователей! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.

Оцените материал
Добавить комментарий

Капча загружается...