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

标签 java date timezone dst

我想知道以下内容是否支持夏令时,即如果我们设置相应国家/地区的时区,则 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

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 .

关于java - SimpleDateFormat 是否解析 - 夏令时意识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560687/

相关文章:

java - StandardTokenizer 是否删除标点符号(在 Lucene 4.1 中)

java - 在 Java 上使用 DFSClient 将文件上传到 HDFS

python - 尝试在 Python 中创建没有时间戳的日期和时间列表

ios - 如何仅在 iOS 中获取日期而不是时间

php - PHP 中的时区

php - 从具有特定时区和特定 $now 值的相对日期/时间字符串获取时间戳

树莓派上的 JavaFX 动画

java - Spring Boot 2 和 Spring 5 容器混淆

php - 生日登记表麻烦

java - Scala 时区问题