analysiert wird Ich habe folgenden Code:Java 8 Datum/Zeit: sofort, kann nicht am Index 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);
Es gibt mir folgende Ausnahme:
Exception in thread "main" java.time.format.DateTimeParseException: Text '2016-09-18T12: 17: 21: 000Z' konnte nicht bei Index 19 um analysiert werden java.time.format.DateTimeFormatter.parseResolved0 (DateTimeFormatter.java:1949) um java.time.format.DateTimeFormatter.parse (DateTimeForm atter.java:1851) bei java.time.Instant.parse (Instant.java:395) bei core.domain.converters.TestDateTime.main (TestDateTime.java:10)
Wenn ich das ändern letzter Doppelpunkt zu einem Punkt:
String dateInString = "2016-09-18T12:17:21.000Z";
... dann die Ausführung geht in Ordnung:
2016-09-18T15: 17: 21 + 03: 00 [Europa/Kiew]
Also, die Frage ist - wie mit Instant
und Datum zu analysieren?
Eigentlich ist der Standard ein COMMA * oder * ein FULL STOP (Periode), wobei das ** Komma bevorzugt wird **. Siehe * ISO 8601: 2004 * Dritte Ausgabe 2004-12-01, Abschnitt "4.2.2.4 Darstellungen mit Dezimalbruch": ... der Dezimalbruch ist vom ganzzahligen Teil durch das in ISO 31-0 angegebene Dezimalzeichen zu trennen, d Komma [,] oder Punkt [.]. Von diesen ist das Komma das bevorzugte Zeichen.... –
@basil Vielleicht für ISO, aber nicht im JDK, [welches den Dezimalpunkt benutzt] (http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatterBuilder.html#) appendFraction-java.time.temporal.TemporalField-int-int-boolean-) – Bohemian