Java 是否有其他方法将LocalDateTime转换为OffsetDateTime(特定于时区)
我想将Java 是否有其他方法将LocalDateTime转换为OffsetDateTime(特定于时区),java,spring-boot,datetime,java-8,Java,Spring Boot,Datetime,Java 8,我想将IST时区中的LocalDateTime转换为系统相关时区中的OffsetDateTime。到目前为止,我的系统位于AWS EC2中托管的UTC时区LocalDateTime字段作为响应从我的Spring boot后端服务中内部调用的API接收。在保存该字段之前,我将其转换为OffsetDateTime,以保持区域偏移。因此,我使用下面的方法进行转换 localDateTime.atOffset(ZoneOffset.of(“+05:30”)) .atzonesamainstant(Zon
IST
时区中的LocalDateTime
转换为系统相关时区中的OffsetDateTime
。到目前为止,我的系统位于AWS EC2中托管的UTC
时区LocalDateTime
字段作为响应从我的Spring boot后端服务中内部调用的API接收。在保存该字段之前,我将其转换为OffsetDateTime
,以保持区域偏移。因此,我使用下面的方法进行转换
localDateTime.atOffset(ZoneOffset.of(“+05:30”))
.atzonesamainstant(ZoneId.systemDefault())
.toOffsetDateTime();
在IST
输出:2020-03-24T15:55:41Z->OffsetDateTime
在系统时区(UTC)
是否有其他方法来进行此转换,或者这是最好的方法。请在这方面帮助我。在JDK-14上,
LocalDateTime
打印2020-03-25T10:59:07.289253
和OffsetDateTime
打印2020-03-25T10:59:07.289253+05:30
。这不是您所期望的吗?@Naman您的机器或运行JDK14的机器的时区是多少?它是id=“Asia/Kolkata”
。我知道了,但错过了实例位于UTC
。但随后OffsetDateTime OffsetDateTime=localDateTime.atOffset(ZoneOffset.of(“+05:30”)).atZoneSameInstant(ZoneId.of(“亚洲/加尔各答”)).toOffsetDateTime()代码>对你没有帮助?我希望转换应该依赖于系统…就像IST到系统运行的任何地方一样。这就是我选择ZoneId.systemDefault()
的原因,你现在做的似乎是最好的方法,除了你应该从atZone(…)
开始,而不是从atOffset(…)
正确处理输入值的DST。在JDK-14上,LocalDateTime
打印2020-03-25T10:59:07.289253
和OffsetDateTime
打印2020-03-25T10:59:07.289253+05:30
。这不是您所期望的吗?@Naman您的机器或运行JDK14的机器的时区是多少?它是id=“Asia/Kolkata”
。我知道了,但错过了实例位于UTC
。但随后OffsetDateTime OffsetDateTime=localDateTime.atOffset(ZoneOffset.of(“+05:30”)).atZoneSameInstant(ZoneId.of(“亚洲/加尔各答”)).toOffsetDateTime()代码>对你没有帮助?我希望转换应该依赖于系统…就像IST到系统运行的任何地方一样。这就是我选择ZoneId.systemDefault()
的原因,您所做的似乎是最好的方法,除了您应该从atZone(…)
开始,而不是从atOffset(…)
开始,以正确处理输入值的DST。