【发布时间】:2021-08-27 07:19:33
【问题描述】:
当我尝试从 java.time 将 OffsetDateTime 转换为 LocalDateTime 时,我希望生成的 LocalDateTime 将使用本地时区进行更新。所以,如果我有 2011-12-03T10:00:00Z 的 OffsetDateTime,并且我的本地时区是 UTC+2,我希望 LocalDateTime 是 2011-12-03T12:00:00,但我得到的是 2011-12-03T10:00:00。我正在使用OffsetDateTime 拥有的方法toLocalDateTime() 对其进行转换。好像只是截断了日期,去掉了偏移部分,没有调整时间。
所以我试图找出一种方法来获得一个LocalDateTime,它代表本地日期时间,同时考虑到区域偏移量。按照例子,我想得到2011-12-03T12:00:00
【问题讨论】:
-
“本地时区”是什么意思有点不清楚。请记住,您使用的是 offset 日期时间,而不是 zoned 日期时间,所以我假设您的意思是“本地偏移量”。然而,这是模棱两可的。您是指瞬间
2011-12-03T10:00:00Z的本地偏移量,还是指现在 的本地偏移量?请注意,本地偏移量可能会发生变化。 -
“好像只是截断了日期,去掉了偏移部分,没有调整时间” ..没错,方法描述就是这么说的(docs.oracle.com/javase/8/docs/api/java/time/… )。此外,
LocalDateTime中的“本地”部分并不意味着它会影响您的实际本地时区,它只是意味着它代表一个对任何当前本地时区/偏移有效的时间,无论它可能是什么。