我想知道以下内容是否支持夏令时,即如果我们设置相应国家/地区的时区,则 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”等是三个字母的代码,不鼓励使用它,但不管这是 DATE 格式解析 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
# 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 .
关于java - SimpleDateFormat 是否解析 - 夏令时意识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560687/