为什么 LocalDateTime 采用区域偏移量格式?

Che*_*rry 2 java java-time

考虑代码:

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

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

Jon*_*eet 9

您已致电LocalDateTime.now(),其记录为(强调我的):

从默认时区的系统时钟获取当前日期时间。

这将查询默认时区的系统时钟以获取当前日期时间。

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

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