【问题标题】:Java, DateTimeFormatter is not considering ZoneDateTime's timezone [duplicate]Java,DateTimeFormatter 没有考虑 ZoneDateTime 的时区 [重复]
【发布时间】:2020-01-13 13:30:11
【问题描述】:

我有这行代码:

// I pass milliseconds timestamp on time var
ZonedDateTime zonedDatetIme = ZonedDateTime.ofInstant(java.time.Instant.ofEpochMilli(time), java.time.ZoneId.of("Asia/Almaty"))

当我这次尝试输出时,它会返回:

System.our.println(zonedDatetIme)
// returns
2020-01-24T17:00+06:00[Asia/Almaty]

然后我尝试格式化这个日期时间:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern('dd.MM.yyyy hh:mm');
System.our.println(formatter.format(zonedDateTime));

返回给我的是:

24.01.2020 05:00

这是错误的。就像它减去我的时区的 6 小时而不是添加它。为什么会这样?

【问题讨论】:

  • 17-5=12 您是如何得到“这就像它减去了我的时区的 6 小时而不是添加它一样”?

标签: java datetime datetime-format


【解决方案1】:

您可能混淆了 hH - h 是上午/下午意义上的时钟小时(在您的示例中:05:00 PM = 17:00),而 H 是小时当天。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多