2014-12-06 3 views
0

На моем сайте пользователь A создает событие, которое начинается в 9:00. Я конвертирую это время в GMT, так что если пользователь B в другом часовом поясе на два часа вперед увидит это событие, его можно будет преобразовать в часовой пояс пользователя B и показать, что событие начинается в 11:00.Как обрабатывать смещение временной зоны с летней экономией?

Моя проблема заключается в том, что если пользователь A создает событие во время летнего времени, то он просматривает его, когда переход на летнее время превышает время, а смещение по часовой стрелке будет отключено на один час. Это приводит к событию, начинающемуся в 8:00 утра, когда это не дневная экономия и 9:00 утра, когда это летнее сбережение. Любые рекомендации о том, как исправить это с помощью javascript или php?

Моя единственная мысль, когда я получаю смещение по часовой стрелке, как показано ниже, должен ли я всегда устанавливать дату в январе, чтобы всегда получать одинаковое смещение часового пояса независимо от фактического месяца? Или есть лучший способ справиться с этим?

d = new Date(); 
d.setMonth(1); 
d.getTimezoneOffset() 
+0

Я не уверен, что вы спрашиваете? Вы всегда должны добавить смещение часового пояса * в указанное время *. Если вы это сделаете, не будет никаких ошибок за один час. –

+0

@MarkReed Вы имеете в виду при создании события, сохраняющего смещение часового пояса с событием и используя это значение при преобразовании его в разные временные интервалы? –

+1

В чем проблема, которую вы пытаетесь решить? Если я создам событие, которое состоится в мае в 9 утра EDT, оно будет сохранено как 1300 UTC. Если я посмотрю на это майское событие, когда он в настоящее время в декабре, он все равно будет отображаться как 9AM, потому что смещение часового пояса в мае составляет 4 часа, хотя текущий в декабре равен 5. –

ответ

0

Смещение часового пояса возвращаемое getTimezoneOffset является на дату метод вызывается на, а не для текущего времени. Поэтому всегда спрашивайте часовую зону события, которое вы показываете, и все должно быть в порядке.

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

Смежные вопросы