Java:无需DST即可获取太平洋时区

时间:2019-03-06 10:38:19

标签: java timezone

我需要在我的代码中使用太平洋时区,该时间没有包含DST。我知道America/Los_Angeles考虑了DST。当我尝试使用PST时,时间API会抛出此异常:

java.time.zone.ZoneRulesException: Unknown time-zone ID: PST

有解决方案吗?

2 个答案:

答案 0 :(得分:7)

“ PST”不是时区ID。

听起来好像您真的不想使用太平洋时区,而是想要将UTC的恒定偏移时间设置为-8小时。您可以执行以下操作:

ZoneOffset offset = ZoneOffset.ofHours(-8);

答案 1 :(得分:2)

选项包括:

  • 使用ZoneOffset,如Jon Skeet的答案中所述。由于ZoneOffsetZoneId的子类,因此可以在需要ZoneId的任何地方使用它。
  • 使用ZoneId.of("Pacific/Pitcairn")。该时区全年偏移-08:00。皮特凯恩标准时间也是PST的缩写。
  • 为了完整起见,ZoneId.of("Etc/GMT+8")为您提供的区域ID不是ZoneOffset,但与ZoneOffset等效(+8不是错字,符号是故意倒转)。

链接: List of tz database time zones