这看起来很奇怪。 Java 8根据millis是否为零来格式化输出。你如何强迫Java 8(1.8.0_20)总是吐出millis,无论它们是否为零?
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
答案 0 :(得分:8)
您基本上不使用ISO_OFFSET_DATE_TIME
:)
如果您按照相关文档进行操作,最终会出现在ISO_LOCAL_TIME
的文档中,其中包含:
这将返回一个能够格式化和解析ISO-8601扩展本地时间格式的不可变格式化程序。格式包括:
- 每小时的两位数字。这是预先填充零以确保两位数。
- 冒号
- 分钟的两位数字。这是预先填充零以确保两位数。
- 如果第二分钟不可用,则表示格式已完成。
- 冒号
- 第二分钟的两位数字。这是预先填充零以确保两位数。
- 如果纳秒级为零或不可用,则表示格式已完成。
- 小数点
- 纳秒级的一到九位数。根据需要输出许多数字。
如果您总是想要3个数字,我怀疑您希望DateTimeFormatter.ofPattern
的格式为yyyy-MM-dd'T'HH:mm:ss.SSSX
。