一个外部API返回了一个包含日期的对象。
根据他们的API规范,所有日期都以格林尼治标准时间(GMT)报告。
然而,生成的客户端类(我无法编辑)没有正确设置时区。相反,它使用本地时区而不将日期转换为该时区。
因此,长话短说,我有一个日期对象,我知道它是GMT,但它显示为中欧时间(CET)。如何在不更改计算机本地时区或类似的操作的情况下调整此错误?
LocalDateTime.ofInstant(someObject.getDate().toInstant().plus(1, ChronoUnit.HOURS),
ZoneId.of("CET"));
谢谢。
String
的示例值吗?接收到的日期时间是什么样子的?它是一个String
还是Date
或者LocalDateTime
甚至是ZonedDateTime
的实例呢? - deHaarjava.util.Date
没有时区。它会按照JVM的默认时区进行打印。因此,如果您在CET时区,则会以CET时区进行打印。如果他们返回一个java.util.Date
,那么“根据他们的API规范,所有日期始终报告为GMT”是不可能的。 - Andy TurnergetTimeZoneOffset()
方法表明,最初java.util.Date
类被设计成也可以包含有关时区的信息。 - Amadán