这看起来很奇怪。 Java 8根据Millis是否为零来格式化输出格式。您如何强制Java 8(1.8.0_20)始终吐出毫厘而不管它们是否为零?

public static void main(String[] args) {
    TemporalAccessor zeroedMillis = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse("2015-07-14T20:50:00.000Z");
    TemporalAccessor hasMillis = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse("2015-07-14T20:50:00.333Z");
    System.out.println(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(zeroedMillis));
    System.out.println(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(hasMillis));
}

2015-07-14T20:50:00Z
2015-07-14T20:50:00.333Z

最佳答案

您基本上不使用ISO_OFFSET_DATE_TIME :)
如果您遵循该文档,则最终会看到ISO_LOCAL_TIME的文档,该文档具有:

如果您始终想要精确的3位数字,我怀疑您希望使用DateTimeFormatter.ofPattern模式的 yyyy-MM-dd'T'HH:mm:ss.SSSX

关于java - Java 8 DateTimeFormatter在零时删除millis?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35184481/

10-11 17:54