ZonedDateTime 到 UTC 并应用了偏移量?

2022-09-03 03:57:07

我正在使用
这就是我的样子Java 8ZonedDateTime

2013-07-10T02:52:49+12:00

我得到这个值作为

z1.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)

其中 是 .z1ZonedDateTime

我想将此值转换为2013-07-10T14:52:49

我该怎么做?


答案 1

这是你想要的吗?这会通过将 your 转换为 a before 来将 a 与 a 一起转换。ZonedDateTimeLocalDateTimeZoneIdZonedDateTimeInstant

LocalDateTime localDateTime = LocalDateTime.ofInstant(z1.toInstant(), ZoneOffset.UTC);

或者,也许您想要用户系统时区而不是硬编码的UTC:

LocalDateTime localDateTime = LocalDateTime.ofInstant(z1.toInstant(), ZoneId.systemDefault());

答案 2

看起来您需要在将其发送到格式化程序之前转换为所需的时区(UTC)。

z1.withZoneSameInstant( ZoneId.of("UTC") )
  .format( DateTimeFormatter.ISO_OFFSET_DATE_TIME )

应该给你一些类似的东西2018-08-28T17:41:38.213Z