Как мне показать дату и время в том же часовом поясе, что и пользователь, использующий PHP или JavaScript? - PullRequest
0 голосов
/ 29 мая 2010

Предположим, теперь у меня есть дата и время для показа так:

2010-05-29 15:32:35

Соответствующий часовой пояс можно получить по date_default_timezone_get,

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

Ответы [ 2 ]

2 голосов
/ 29 мая 2010

Нет надежного способа прочитать настройки часового пояса пользователя из PHP или JavaScript.

В JavaScript вы можете прочитать смещение между временем по Гринвичу и временем в текущем часовом поясе пользователя, но это не дает вам имя часового пояса, поэтому вы оставляете либо оставив идентификатор часового пояса выключенным (что делает время совершенно неопределенным) или в том числе это явное смещение типа UTC+01:00, которое некрасиво и все еще не заботится об изменении часовых поясов в разные периоды летнего времени.

Как говорит Боба, вы можете использовать toLocaleString() в JavaScript Date для вывода его в реальном часовом поясе рабочего стола клиента. Однако, таким образом, вы не получаете никакого контроля над форматированием даты. Например, на моей машине Chrome выводит громоздкие:

Sat May 29 2010 15:03:46 GMT+0200 (W. Europe Daylight Time)

В то время как Опера просто кашляет:

29/05/2010 15:03:46

Что, поскольку оно вообще не устанавливает часовой пояс, является бесполезно двусмысленным. IE аналогично лаконичен, и Safari также не указывает часовой пояс. Firefox делает для меня в Linux, но не в Windows. Argh.

Так что, если вам нужна надежность, единственный способ обработки часовых поясов - это позволить пользователю вручную выбрать один из них в настройках своего сайта, а затем выполнить преобразование из UTC в этот часовой пояс, когда вы создаете для них страницу. В JavaScript вы можете догадаться, какая из наиболее вероятных часовых поясов наиболее вероятна (см. этот вопрос для стратегий), но вы не можете гарантировать, что вы правы.

0 голосов
/ 29 мая 2010

Вы можете передавать метки времени UTC на страницу и конвертировать их с помощью JavaScript. Я использовал этот трюк один раз и был доволен результатом. Существует конструктор JavaScript Date с отметкой времени UTC. Для генерации метки времени UTC из PHP можно использовать gmmktime () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...