![](/img/trans.png)
[英]How to convert PostgreSQL timestamp with time zone to Java Instant or OffSetDateTime?
[英]How can I convert Java ZonedDateTime to OffsetDateTime with default time zone offset?
假设我的 ZonedDateTime 为2018-10-30T18:04:58.874Z
:如何将其转换为 OffsetDateTime 2018-10-30T13:04:58.874-05:00
我希望偏移量是默认/系统偏移量,例如从OffsetDateTime.now()
中提取。
从您的ZonedDateTime
您需要指定您想要OffsetDateTime
其他区域,精确区域并使用.toOffsetDateTime()
:
ZonedDateTime z = ZonedDateTime.parse("2018-10-30T18:04:58.874Z");
System.out.println(z); //2018-10-30T18:04:58.874Z
OffsetDateTime o = z.withZoneSameInstant(ZoneId.of("UTC-5")).toOffsetDateTime();
System.out.println(o); //2018-10-30T13:04:58.874-05:00
这会将时区从当前/现在转移:
someOffsetDateTime.withOffsetSameInstant(OffsetDateTime.now().getOffset())
我认为正确的做法如下:
ZonedDateTime date = ZonedDateTime.parse("2018-10-30T18:04:58.874Z");
ZoneOffset offset = ZoneId.systemDefault().getRules().getOffset(date.toInstant());
ZonedDateTime dateInMyZone = date.withZoneSameInstant(offset)
从 now() 获取它会给你一个可能错误的结果,因为由于夏令时,偏移量可能会在一年中发生变化
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.