首页 > 解决方案 > 在 java 8 中使用正确的偏移量将 OffsetDateTime 转换为 LocalDateTime

问题描述

当我尝试从 java.time 转换时,我希望结果OffsetDateTime会更新为本地时区。所以,如果我有一个of ,并且我的本地时区是 UTC+2,我希望 LocalDateTime 是,但我得到的是。我正在使用具有的方法对其进行转换。好像只是截断了日期,去掉了偏移部分,没有调整时间。LocalDateTimeLocalDateTimeOffsetDateTime2011-12-03T10:00:00Z2011-12-03T12:00:002011-12-03T10:00:00toLocalDateTime()OffsetDateTime

所以我试图找出一种方法来获得LocalDateTime代表本地日期时间的a,同时考虑到区域偏移量。按照这个例子,我想得到2011-12-03T12:00:00

标签: javatimetimezone

解决方案


LocalDateTime 将为您提供 OffsetDateTime 的挂钟时间。那是 10:00

您需要先转换为您所在时区的 ZonedDatedTime

像这样

OffsetDateTime off = OffsetDateTime.of(2011,12,3,10,00,0,0, ZoneOffset.UTC);
ZonedDateTime zoned = off.atZoneSameInstant(ZoneId.of("Europe/Athens"));
LocalDateTime athensWallTime = zoned.toLocalDateTime();
System.out.println(athensWallTime);

推荐阅读