gpt4 book ai didi

java - TimeZone.getTimeZone ("PST") 与 TimeZone.getTimeZone ("America/Los_Angeles")

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:26 29 4
gpt4 key购买 nike

我正在使用 Java 8,

在我们的代码的前面,我们使用 sdf.setTimeZone(TimeZone.getTimeZone("PDT")); 转换为失败的美国太平洋地区(没有抛出任何错误,但转换为默认时区) 由于 PDT 不是有效的 ZoneId。

所以我寻找 setTimeZone(TimeZone.getTimeZone("PST"));,它在 TimeZone.getAvailableIDs() 值中也不可用。

最后我使用了 sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));

现在,我们的一位 friend 使用 setTimeZone(TimeZone.getTimeZone("PST")); 转换为美国太平洋时区,并且转换正常进行。

问题是,

TimeZone.getTimeZone("PST");TimeZone.getTimeZone("America/Los_Angeles"); 之间有什么区别?

哪个更好用?

最佳答案

引用 Error Prone's ThreeLetterTimeZoneID check 的文档:

According to the Javadoc of java.util.TimeZone:

For compatibility with JDK 1.1.x, some other three-letter time zone IDs (such as “PST”, “CTT”, “AST”) are also supported. However, their use is deprecated because the same abbreviation is often used for multiple time zones (for example, “CST” could be U.S. “Central Standard Time” and “China Standard Time”), and the Java platform can then only recognize one of them.

除了时区之间的歧义外, 返回时区遵守夏令时, 这意味着获得的 TimeZone 可能不是您所期望的。例子 包括:

DateTime.getTimeZone("PST") 遵守夏令时; 但是,标识符暗示它是太平洋标准时间,即 不遵守夏令时。 DateTime.getTimeZone("EST") (以及 "MST""HST")不遵守夏令时。然而, 这与 PST(和其他)不一致,因此您可能认为 将遵守夏令时。

因此:使用完整的America/Los_Angeles 格式来最小化代码中的歧义。

关于java - TimeZone.getTimeZone ("PST") 与 TimeZone.getTimeZone ("America/Los_Angeles"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55627607/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com