为什么使用区域偏移格式化 LocalDateTime?

Why LocalDateTime formatted with zone offset?

考虑代码:

public static void main(String[] args) {
  System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH")));
}

输出为 2022-05-04-17 而 UTC 时间为 2022-05-04-10。文档说 LocalDateTime 没有区域偏移 - 那么为什么有 7 小时轮班? (我当地的时区是 +7UTC

您调用了 LocalDateTime.now(),即 documented 作为(强调我的):

Obtains the current date-time from the system clock in the default time-zone.

This will query the system clock in the default time-zone to obtain the current date-time.

返回的 LocalDateTime 不“知道”UTC 偏移量,但它已经应用于确定值。

如果要获取当前UTC时间,可以使用LocalDateTime.now(ZoneOffset.UTC)。 (尽管在这种情况下 LocalDateTime 可能不是最合适的表示 - 我们需要更多地了解您使用它的目的。)