2015-02-17 4 views
2

Я хотел бы знать, является ли следующее DST, то есть метод SimpleDateFormat parse DST известен, если установить часовой пояс этой страны.Простой анализ SimpleDateFormat - Сознание летнего времени?

SimpleDateFormat sdf = new SimpleDateFormat(); 
sdf.setTimeZone(TimeZone.getTimeZone("CET")); //Germany 
String currentDate = sdf.format((new Date()).getTime()); 
currentDate = sdf.parse(currentDate); 

Я undserstand, что «CET», «МСТ», «EST» и т.д. три буквенные коды и не рекомендуется использовать это, но независимо от этого является DateFormat синтаксический DST известно?

Заранее спасибо.

+2

Что вы сделали, чтобы попробовать это для себя? Что возвращает 'TimeZone.useDaylightTime'? –

+0

Спасибо большое, Джон, проверьте это. –

+0

Он сохраняет истинный джон для тех, у кого есть летнее время, такое как CET, EST, и возвращает false для HST и JST –

ответ

1

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

Из источников TZ баз данных:

Europe:

# Zone NAME GMTOFF RULES FORMAT [UNTIL] 
Zone WET  0:00 EU  WE%sT 
Zone CET  1:00 C-Eur CE%sT 
Zone MET  1:00 C-Eur ME%sT 
Zone EET  2:00 EU  EE%sT 

North America:

# Zone NAME GMTOFF RULES FORMAT [UNTIL] 
Zone EST  -5:00 -  EST 
Zone MST  -7:00 -  MST 
Zone HST  -10:00 -  HST 

Как вы можете видеть, Европейский файл определяет 4 трехбуквенных зон для целей обратной совместимости , все из которых соответствуют европейским правилам летнего времени.

Однако североамериканский файл определяет только 3 из них. Примечательно, что PST и CST отсутствуют. Кроме того, зоны EST и MST, которые определены, имеют , а не имеют любые правила летнего времени.

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

+0

Whoa, Ill дважды проверьте это снова. –