我试图使用新的Java 8日期和时间API和以下模式格式化一个即时字符串:
Instant instant = ...;
String out = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(instant);
使用上面的代码,我得到了一个异常,抱怨一个不支持的字段:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra
at java.time.Instant.getLong(Instant.java:608)
at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298)
...
瞬时已经是UTC,并且已经有一个默认的日期格式yyyy-MM-dd。如果你对此感到满意,并且不想打乱时区或格式,你也可以toString()它:
Instant instant = Instant.now();
instant.toString()
output: 2020-02-06T18:01:55.648475Z
不想要T和Z?(Z表示该日期为UTC。Z代表“Zulu”,又名“零时偏移”,又名UTC):
instant.toString().replaceAll("[TZ]", " ")
output: 2020-02-06 18:01:55.663763
想要毫秒而不是纳秒?(所以你可以把它放入sql查询中):
instant.truncatedTo(ChronoUnit.MILLIS).toString().replaceAll("[TZ]", " ")
output: 2020-02-06 18:01:55.664
etc.