Отображение местного времени для пользователя?PHP - PullRequest
0 голосов
/ 18 августа 2011

У меня есть этот скрипт, который преобразует массив из 1-24 военного времени в AM / PM для просмотра пользователем. Я хочу, чтобы этот скрипт отображал не только часы и am / pm, но и местное время пользователей. Можно ли это сделать?

Вот мой скрипт, который я использую для отображения часа:

foreach($timelist as $time):
        echo "<input type='radio' name='time' value='$time' />";
        //echo $time;
        $hr = ($time <= 12 ? $time : ($time - 12));
        $ampm = ( (($time >= 12) and ($time < 24)) ? 'PM' : 'AM' );
        echo $hr." ".$ampm;
        echo "<br />";
endforeach;

Я хочу, чтобы $ hr отображало, например, 12 GMT по местному времени текущего пользователя. Так что, если бы они были в PST, это было бы 5 PST вместо 12 GMT из-за местоположения пользователей. Не забывайте о переключении AM / PM в зависимости от местоположения.

Любая помощь приветствуется.

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 августа 2011

На странице входа пользователя используйте javascript, чтобы изменить действие формы (или, альтернативно, создать скрытое поле), которое содержит смещение UTC пользователя.Смещение можно найти с помощью getTimezoneOffset

Затем вы можете сохранить это смещение в сеансе пользователя и / или в таблице и использовать его для вычисления местного времени в PHP.

1 голос
/ 18 августа 2011

Клиент не отправляет часовой пояс или местное время в заголовках запроса, поэтому вы не можете сделать это только на PHP без посторонней помощи.Есть несколько способов сделать это:

  1. Получить местное время на стороне клиента с помощью Javascript и «изящно уменьшить» время сервера, если у пользователя отключен Javascript.Если это нужно только показать пользователю, это самый простой вариант.Если вам нужно что-то сделать на стороне сервера, вы можете отправить часовой пояс / время с помощью запроса AJAX.
  2. Используйте API / пакет геолокации, чтобы угадать часовой пояс пользователя на основе его IP-адреса.Это гораздо более «дорого» по времени и менее точно, но чисто на стороне сервера.Используйте это для расчета GMT +/- смещения относительно времени сервера.Затем вы можете попросить пользователя подтвердить правильность рассчитанного при входе в систему.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...