gpt4 book ai didi

java - 不支持的字段 : Year when formatting an instant to Date ISO

转载 作者:IT老高 更新时间:2023-10-28 21:06:29 29 4
gpt4 key购买 nike

我正在尝试将 Instant 格式化为 ldap 日期 ISO8601,但在 f.format(Instant.now()); 处失败:

String input = "20161012235959.0Z";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "uuuuMMddHHmmss[,S][.S]X" );
OffsetDateTime odt = OffsetDateTime.parse ( input , f );
Instant instant = odt.toInstant ();

f.format(Instant.now());

错误是:

java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: Year

at java.time.Instant.getLong(Instant.java:603)
at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298)
at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2540)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2179)
at java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1746)
at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1720)
...
...

最佳答案

要格式化 Instant,需要时区。

 String input = "20161012235959.0Z";
DateTimeFormatter f = DateTimeFormatter
.ofPattern ( "uuuuMMddHHmmss.SX" )
.withLocale( Locale.FRANCE )
.withZone( ZoneId.of("UTC"));
OffsetDateTime odt = OffsetDateTime.parse ( input , f );
Instant instant = odt.toInstant ();

System.out.println(input);
System.out.print(f.format(instant));

关于java - 不支持的字段 : Year when formatting an instant to Date ISO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40211892/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com