Java 11 ZonedDateTime - 打印格式

Ade*_*ino -1 java date-format zoneddatetime

如何使用 Java 11 中的 ZonedDateTime 对象获得 2023-11-16T09:54:12.123 的结果?

我写:

zdt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
Run Code Online (Sandbox Code Playgroud)

并得到 ISO_LOCAL_DATE_TIME: 2023-11-16T17:25:27.1881768

我想删除只有三位数字的纳秒。

k31*_*159 5

有两种方法可以做到这一点:

  1. 使用 ISO_LOCAL_DATE_TIME,但将时间截断为毫秒:
zdt.truncatedTo(ChronoUnit.MILLIS)
        .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
Run Code Online (Sandbox Code Playgroud)
  1. 使用自定义格式化程序并保持时间不变:
private static final var ldtMillisFormatter =
        DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSS");
...
zdt.format(ldtMillisFormatter)
Run Code Online (Sandbox Code Playgroud)