java - 在 java 8 中使用正确的偏移量将 OffsetDateTime 转换为 LocalDateTime
问题描述
当我尝试从 java.time 转换时,我希望结果OffsetDateTime
会更新为本地时区。所以,如果我有一个of ,并且我的本地时区是 UTC+2,我希望 LocalDateTime 是,但我得到的是。我正在使用具有的方法对其进行转换。好像只是截断了日期,去掉了偏移部分,没有调整时间。LocalDateTime
LocalDateTime
OffsetDateTime
2011-12-03T10:00:00Z
2011-12-03T12:00:00
2011-12-03T10:00:00
toLocalDateTime()
OffsetDateTime
所以我试图找出一种方法来获得LocalDateTime
代表本地日期时间的a,同时考虑到区域偏移量。按照这个例子,我想得到2011-12-03T12:00:00
解决方案
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);
推荐阅读
- python - 如何在循环中使用熊猫将行添加到数据框中?
- reactjs - react如何处理props的变化?
- javascript - Javascript 中的函数 foo(){} 和 foo: function(){} 有什么区别?
- python - Pandas:在多列之间线性插值多个步骤
- python - cv2.circle int() 参数必须是字符串或数字,而不是“元组”
- django - Django 从数据库中获取随机对象
- java - Azure Webapp Java Rest API 端点不起作用
- python - 我想在Python循环中的每个图旁边绘制每个图例
- c# - 线程进程在执行完整代码之前退出
- applescript - 在applescript中设置时间码