2012-03-25 2 views
35

Может кто-нибудь пожалуйста, скажите, в чем разница между следующими двумя утверждениями:разница между EST и Америке/New_York часовых поясов

TimeZone.getTimeZone("America/New_York") 

и

TimeZone.getTimeZone("EST") 

Другими словами, почему EST отличается от Америка/New_York. Также в моей заявке, чтобы получить текущий часовой пояс в США, следует использовать Америку/New_York или EST.

ответ

47

EST - половина из часового пояса в Нью-Йорке, эффективно. Это всегда в стандартное время - у него нет летней части. Это не действительно собственный часовой пояс в своем собственном праве, ИМО - это «стандартная» часть более полного часового пояса. При написании о часовом поясе, который является , только фиксированное смещение и не относится к определенному месту, я бы предпочел использовать «Etc/GMT + 5» или что-то подобное явно фиксированное. (Мне вообще не нравится даже «Восточное время» и т. П., Поскольку разные места, которые наблюдают «Восточное время», могут различаться в их переходах на летнее время. Это немного похоже на вызов кодирования «расширенный ASCII» ... он сообщает вам некоторые информации, но не вполне достаточно.)

Так что, если вы хотите знать фактическое местного времени в Нью-Йорк в любом конкретный момент времени, используйте America/New_York.

В целом, держитесь подальше от аббревиатур. От the documentation:

Для совместимости с JDK 1.1.x, некоторые другие идентификаторы часового пояса трехбуквенные (такие, как «PST», «СТТ», «АСТ») также поддерживаются. Однако их использование устарело, поскольку такое же сокращение используется часто для нескольких часовых поясов (например, «КНТ» может быть «Центральным стандартным временем» США и «Китайским стандартным временем»), и платформа Java может затем распознать только одну из их.

(.. Лично я также советую вам держаться подальше от Date и Calendar, предпочитая использовать Joda Time везде, где это возможно, что это совсем другое дело, хотя, на самом деле)

+0

Я думаю, что это не правильный часовой пояс, вводящий в заблуждение, поскольку некоторые временные зоны не имеют разрывов DST/non-DST. Нужны ли имена, подобные EST, для навигационных часовых поясов или они просто используют смещения? –

+0

@JamesAylett: Pass. На самом деле я бы не надеялся, учитывая, что они неоднозначны. (IIRC, CST неоднозначно между «Центральным стандартным временем» и «Центральным летним временем в Австралии», что особенно бесполезно, хотя один из них не использовался уже много лет.) Приятно видеть вас, btw :) –

+2

@JamesAylett : Я предполагал, что это не правильный часовой пояс не потому, что он не соблюдает DST, а потому, что он явно является частью чего-то, что * замечает DST - иначе «стандартная» часть будет излишней. Конечно, «GMT» становится хитрый около 1969 года, когда он отклонился от еще не существующего UTC :( –

60

EST является UTC - 5 часов. Америка/New_York - EST зимой и E * D * T летом, поэтому прямо сейчас Нью-Йорк UTC - 4 часа.

+7

Это нужно путь, путь больше upvotes. –

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