我正在尝试使用新的 Java 8 Date and Time API 和以下模式将 Instant 格式化为 String:
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)
...
原文由 Dag 发布,翻译遵循 CC BY-SA 4.0 许可协议
时区
要格式化
Instant
需要 时区。没有时区,格式化程序不知道如何将即时日期时间字段转换为人类日期时间字段,因此会抛出异常。可以使用
withZone()
将时区直接添加到格式化程序中。如果您特别想要一个没有明确时区的 ISO-8601 格式(如 OP 所要求的那样), 并且时区隐式为 UTC ,您需要
生成字符串
现在使用该格式化程序生成 Instant 的字符串表示形式。
转储到控制台。
运行时。