【发布时间】:2020-04-08 10:53:00
【问题描述】:
我只想将 Instant 时刻移动到另一个时区。
例如
2020-04-08 23:59:59.999 UTC -> 到Europe/Sarajevo[UTC+1]
应该在:
2021-04-09 00:59:59.999 UTC
它不会返回这个
dateVal.atZone(operatorTimeZone).toInstant()
返回错误的值。
但dateVal.atZone(operatorTimeZone) 返回正确的值。
不幸的是,我需要即时响应。
如何解决这个问题?
感谢和问候,
【问题讨论】:
-
Instant不支持时区。查看此问题了解详情:Getting the the current Instant in a specific TimeZone -
Java 日期时间 API (java.time.Instant) 中的 Instant 类表示时间线上的特定时刻。瞬间被定义为从原点开始的偏移量(称为纪元)。 Zone 没有任何意义,因为您可能会看到它从原点开始的持续时间,无论您在地球上的哪个地方,这都是一样的
-
“结果应该是:2021-04-09 00:59:59.999 UTC”——不,不应该。听起来您误解了 Instant 所代表的含义。我怀疑您实际上想从 2020-04-08 23:59:59.999 作为
LocalDateTime开始,然后将 that 转换为 Europe/Sarajevo 时区,然后将其转换为 Instant。
标签: java