在我的程序中,用户可以从我获得的 ID 列表中选择时区TimeZone.getAvailableIDs()
。该 ID 存储在数据库中,稍后我用它ZoneId.of(String zoneId)
来获取 ZoneId 对象。
但今天在调试时,我意识到 生成的一些 IDTimeZone.getAvailableIDs()
无法识别ZoneId.of(String zoneId)
,并抛出“java.time.zone.ZoneRulesException”。例如ZoneId.of("EAT")
抛出异常。
该类ZoneId
本身可以使用 生成区域 ID 列表ZoneId.getAvailableZoneIds()
。这会为我返回 599 个 ID,但TimeZone.getAvailableIDs()
会返回 627 个 ID。
有人可以向我解释一下其中的区别吗?为什么我会得到 2 个不同的区域 ID 列表?
我使用Java 8。
java.util.TimeZone 中已弃用短区域 ID 的使用。该映射允许继续通过工厂方法使用 ID
of(String, Map)
。
所以你应该使用相同方法的不同签名
ZoneId.of("EAT", ZoneId.SHORT_IDS)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用全名
ZoneId.of("Africa/Addis_Ababa")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3254 次 |
最近记录: |