JavaScript, часовые пояса и летнее время

Добро пожаловать в эпизод этой недели Еще один вопрос о часовом поясе:

Я довольно много читал о SO, пытался манипулировать moment.js и date.js, чтобы они мне помогли, и, как правило, меня мучает чувство разочарования с тех пор, как я начал пытаться решить эту проблему, поэтому, если бы кто-нибудь мог помочь или указать мне на дублирующийся вопрос о SO, который я просто не смог найти, это было бы здорово.


У меня есть страница. На этой странице отображается ряд значений времени, например: 7:28, 7:38, 7:48. Я знаю, являются ли они AM/PM. Это время всегда Америка/Нью-Йорк (они не меняются при переходе на летнее время, поскольку событие, которому они соответствуют, всегда происходит в это время, независимо от перехода на летнее время). Назовем их расписанием. Я хочу выделить время, которое приближается.

  • Это тривиально для людей, живущих в Америке/Нью-Йорке.
  • Это не так уж ужасно для людей, живущих в Америке/Лос-Анджелесе (при условии, что моя логика работает).
    • Я могу взять текущее время на компьютере в Америке/Лос-Анджелесе, преобразовать его в UTC, затем определить, соблюдается ли Америка/Лос-Анджелес летнее время или нет, и определить, должно ли Америка/Нью-Йорк быть -04:00 или -05:00. , примените это к UTC и сделайте мое сравнение. Это немного больно, потому что вы все еще всегда имеете дело с Date, базирующейся в Америке/Лос-Анджелесе, и на самом деле не меняете часовой пояс объекта Date, но у меня есть надежный способ отката (или вперед) часов от UTC время.

Что происходит, однако, когда я пытаюсь определить, соблюдается ли летнее время с компьютера в регионе, где вообще не соблюдается летнее время?

JavaScript будет создавать объекты Date только для текущий часовой пояс, насколько мне известно, а затем любое определение летнего времени основано на этом объекте Date.

Может мне просто все равно? Времена в первую очередь актуальны только для людей, живущих в Америке/Нью-Йорке. Я просто пытаюсь создать приложение, которое имеет смысл при просмотре из другого часового пояса, например, когда 3 часа ночи в стране без летнего времени и 2 часа дня в Америке/Нью-Йорке, «расписание» подчеркивает, что 14:05 вот-вот произойдет, и не 3:05 вещь.

6
задан Aaron 3 March 2012 в 04:54
поделиться