java.time 具有固定毫秒数字的 ISO 日期格式(在 Java 8 及更高版本中)
java.time ISO date format with fixed millis digits (in Java 8 and later)
默认情况下,toString
method of Instant
uses the DateTimeFormatter.ISO_INSTANT 格式化程序。如果数字恰好为 0,则该格式化程序不会在几分之一秒内打印数字。
java-time 例子:
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07Z
Joda-Time 示例(以及我对 java.time 的期望):
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07.000Z
这在某些系统中解析起来确实令人沮丧。 Elasticsearch 是我遇到的第一个问题,没有支持可选 millis 的预定义格式,但我可以使用自定义格式来解决这个问题。默认值似乎是错误的。
看来您无法真正为 Instants 构建自己的格式字符串。是实现我自己的 java.time.format.DateTimeFormatterBuilder.InstantPrinterParser 的唯一选择吗?
只需创建一个 DateTimeFormatter
保留三位小数。
DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendInstant(3).toFormatter();
那就用吧。例如:
System.out.println(formatter.format(Instant.now()));
System.out.println(formatter.format(Instant.now().truncatedTo(ChronoUnit.SECONDS)));
…打印(当时我运行它):
2015-10-08T21:26:16.571Z
2015-10-08T21:26:16.000Z
class doc 的摘录:
… The fractionalDigits parameter allows the output of the fractional second to be controlled. Specifying zero will cause no fractional digits to be output. From 1 to 9 will output an increasing number of digits, using zero right-padding if necessary. The special value -1 is used to output as many digits as necessary to avoid any trailing zeroes. …
默认情况下,toString
method of Instant
uses the DateTimeFormatter.ISO_INSTANT 格式化程序。如果数字恰好为 0,则该格式化程序不会在几分之一秒内打印数字。
java-time 例子:
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07Z
Joda-Time 示例(以及我对 java.time 的期望):
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07.000Z
这在某些系统中解析起来确实令人沮丧。 Elasticsearch 是我遇到的第一个问题,没有支持可选 millis 的预定义格式,但我可以使用自定义格式来解决这个问题。默认值似乎是错误的。
看来您无法真正为 Instants 构建自己的格式字符串。是实现我自己的 java.time.format.DateTimeFormatterBuilder.InstantPrinterParser 的唯一选择吗?
只需创建一个 DateTimeFormatter
保留三位小数。
DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendInstant(3).toFormatter();
那就用吧。例如:
System.out.println(formatter.format(Instant.now()));
System.out.println(formatter.format(Instant.now().truncatedTo(ChronoUnit.SECONDS)));
…打印(当时我运行它):
2015-10-08T21:26:16.571Z
2015-10-08T21:26:16.000Z
class doc 的摘录:
… The fractionalDigits parameter allows the output of the fractional second to be controlled. Specifying zero will cause no fractional digits to be output. From 1 to 9 will output an increasing number of digits, using zero right-padding if necessary. The special value -1 is used to output as many digits as necessary to avoid any trailing zeroes. …