我有下面这段代码:的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