【发布时间】:2020-04-08 23:38:21
【问题描述】:
我有一些代码可以从记录中读取一个短时区 id 并通过它传递:
ZoneId.of(ZoneId.SHORT_IDS.get(place.getTz()))
我无法控制使用哪些时区 ID,但我的印象是它始终是合法的短时区 ID。
我想情况是我需要询问“根据 WHICH STANDARD 的合法短时区 ID?”例如,我刚刚发现我们有一个时区 id 为“AKST”的记录,它对应于阿拉斯加标准时间。 Java ZoneId 类无法识别。
我的解决方法是为我知道需要支持但我知道 ZoneId 不支持的美国时区 ID 手动构建 ZoneId。我的清单现在只有一个条目。是否还有其他 ZoneId 不支持的“标准”(无论这意味着什么)短时区 ID?
【问题讨论】:
-
David 服务器端应该始终是 UTC 否?
-
感谢您的回复,但我看不出这有什么关系,甚至不正确。
-
大卫你能看看这里吗:stackoverflow.com/a/1707934/4828463
-
我想这让我相信我不能真正依赖短 ID 的标准。无论如何,我发现我可以在所有记录中搜索唯一的 tz 值,而 AKST 是唯一的异常值,所以我可以忍受这一点。永远不可能出现具有不同时区的新记录。
-
问题不在于支持哪些。您可以构建自己的地图,而不是
SHORT_IDS,然后随意放入其中。问题是有些时区不明确和/或不是真正的时区。如果有人在冬天指定 MDT(山地夏令时),你想抛出错误吗?如果他们相反地指定 MST(山地标准时间)为夏季的某个时间,您是否要将其解释为山地夏令时间(在大多数地方都会暗示)或山地标准时间(在亚利桑那州的部分地区使用)或严格的 UTC -07:00(在 1883 年之前甚至在亚利桑那州都没有使用过)?