我需要在我的代码中使用太平洋时区,不并入DST。我知道America/Los_Angeles
考虑了DST。当我尝试使用PST
时,时间API会引发此异常:
java.time.zone.ZoneRulesException: Unknown time-zone ID: PST
是否有解决方案?
" pst"不是时区ID。
听起来您真的不想使用太平洋时区,因为恒定的UTC偏移为-8小时。您可以使用:
ZoneOffset offset = ZoneOffset.ofHours(-8);
选项包括:
- 使用乔恩·斯基特(Jon Skeet)答案中已经解释的
ZoneOffset
。由于ZoneOffset
是ZoneId
的子类,因此您可以在任何地方使用ZoneId
。 - 使用
ZoneId.of("Pacific/Pitcairn")
。这个时区全年为-08:00。Pitcairn标准时间也缩写为PST。 - 为了完整性,
ZoneId.of("Etc/GMT+8")
为您提供了一个不是ZoneOffset
的区域ID,而是等效于ZoneOffset
(+8
不是错字,符号是故意倒置的)。
链接: TZ数据库时区的列表