SimpleDateFormat 是否解析 - 夏令时意识?

Is SimpleDateFormat parse - Daylight Saving Time Aware?

我想知道以下内容是否支持夏令时,即如果我们设置相应国家/地区的时区,则 SimpleDateFormat 解析方法支持夏令时。

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

我理解 "CET"、"MST"、"EST" 等是三个字母的代码,不鼓励使用它,但不管这是什么,日期格式解析 DST 是否知道?

提前致谢。

在某些特定情况下,三字母代码可以使用 - 但并非所有代码都包含夏令时规则。

来自 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 区域没有有任何夏令时规则。

一般来说,您应该避免使用三个字母的缩写。它们 all 不支持,不 all 支持夏令时,一般来说 they can be ambiguous.