【问题标题】:Java: get pacific timezone without DSTJava:获得没有 DST 的太平洋时区
【发布时间】:2019-03-06 10:38:19
【问题描述】:

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

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

有解决办法吗?

【问题讨论】:

  • 在我看来这是一个特殊的要求,所以我想知道它是否可能是一些XY problem。你能解释一下你为什么需要它吗?我相信这将帮助我们帮助您找到最佳选择(有一些)。
  • @OleV.V.是的,这是一个XY问题。我真的不想在这里解释 X,因为 X 在我们的系统深处是一种愚蠢的东西,没有人有时间修复它。希望澄清。
  • 在这种情况下,听起来Jon Skeet’s answer 是正确的。谢谢。

标签: java timezone


【解决方案1】:

“PST”不是时区 ID。

听起来您并不想使用太平洋时区,而是使用 -8 小时的恒定 UTC 偏移量。你可以这样做:

ZoneOffset offset = ZoneOffset.ofHours(-8);

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 2021-12-22
      • 2013-03-13
      • 1970-01-01
      • 2013-03-13
      • 2019-04-16
      • 1970-01-01
      • 2018-12-16
      • 2015-01-22
      相关资源
      最近更新 更多