我有下面這段代碼:的Java 8日期/時間:瞬發,無法在指數解析19
String dateInString = "2016-09-18T12:17:21:000Z";
Instant instant = Instant.parse(dateInString);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Europe/Kiev"));
System.out.println(zonedDateTime);
它給了我以下異常:在線程
異常「主」 java.time.format.DateTimeParseException: Text'2016-09-18T12:17:21:000Z'could not be parsed at index 19 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeForm atter.java:1851) 在java.time.Instant.parse(Instant.java:395)在 core.domain.converters.TestDateTime.main(TestDateTime.java:10)
當我改變最後一個冒號完全停止:
String dateInString = "2016-09-18T12:17:21.000Z";
...然後去執行罰款:
2016-09-18T15:17:21 + 03:00 [歐洲/基輔]
所以,問題是 - 如何解析日期Instant
和DateTimeFormatter
?
事實上的標準是逗號*或*句號(週期),與**逗號優選**。參見* ISO 8601:2004 *第三版2004-12-01,「4.2.2.4帶小數的表示法」部分:...小數部分應從整數部分除以ISO 31-0中規定的小數點,即逗號[,]或句號[。]。其中,逗號是首選標誌。... –
@basil可能是ISO,但不在JDK中,[使用小數點](http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatterBuilder.html# appendFraction-java.time.temporal.TemporalField-INT-INT-boolean-) – Bohemian