Is SimpleDateFormat parse - Daylight Saving Time Aware?
date, dst, java, timezone
Solution
In some specific cases, the three-letter codes will work - but not all of them include daylight saving time rules.
From the TZ database sources:
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
As you can see, the European file defines 4 three-letter zones for backwards compatibility purposes, all of which follow European daylight saving time rules.
However, the North American file only defines 3 of these. Notably, PST and CST are missing. Also, the EST and MST zones that are defined do not have any daylight saving time rules.
In general, you should avoid using the three-letter abbreviations. They are not all supported, the ones that are do not all support DST, and in general they can be ambiguous.
Problem
I would like to know if the following is DST aware ie., the SimpleDateFormat parse method is DST aware if we set the Timezone of that respective country. ``` SimpleDateFormat sdf = new SimpleDateFormat(); sdf.setTimeZone(TimeZone.getTimeZone("CET")); //Germany String currentDate = sdf.format((new Date()).getTime()); currentDate = sdf.parse(currentDate); ``` I undserstand that "CET", "MST", "EST" etc are three letter codes and is not encouraged to use this, but irrespective of this is the dateformat parse DST aware ? Thanks in advance.