java.Zeit.format.DateTimeParseException: Text konnte nicht analysiert werden, bei index 21
Bekomme ich den datetime-Wert als
created_at '2012-02-22T02:06:58.147Z'
Read-only. The time at which this task was created.
Welche gegeben ist durch Asana API
Ich bin mit Java 8
zu analysieren, das Datum bzw. die Uhrzeit wie folgt
import java.time.*;
import java.time.format.*;
public class Times {
public static void main(String[] args) {
final String dateTime = "2012-02-22T02:06:58.147Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ss.SX");
final ZonedDateTime parsed = ZonedDateTime.parse(dateTime, formatter);
System.out.println(parsed);
}
}
Wenn ich diesen starte, bekomme ich die folgende Fehlermeldung
Exception in thread "main" java.time.format.DateTimeParseException: Text '2012-02-22T02:06:58.147Z' could not be parsed at index 21
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
at Times.main(Times.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Was ist hier nicht richtig?
Möchten Sie vielleicht ändern in "yyyy-M-d' , Griff einstelligen Monaten und Tagen.
InformationsquelleAutor daydreamer | 2016-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem default-parser Parsen können Sie Ihre Eingabe. So brauchen Sie nicht eine benutzerdefinierte formatter-und
funktioniert wie erwartet.
InformationsquelleAutor assylias
Wenn Sie Ihre Eingabe hat immer die Zeitzone von "zulu" ("Z" = UTC), dann können Sie
DateTimeFormatter.ISO_INSTANT
(implizit):Wenn die Zeitzone variiert und hat die form "+01:00" oder "+01:00:00" (wenn nicht "Z"), dann können Sie
DateTimeFormatter.ISO_OFFSET_DATE_TIME
:Wenn beides nicht der Fall, können Sie konstruieren eine
DateTimeFormatter
in der gleichen Weise wieDateTimeFormatter.ISO_OFFSET_DATE_TIME
aufgebaut ist.Ihre aktuellen Muster hat mehrere Probleme:
ResolverStyle.STRICT
);yyyy
stattuuuu
(yyyy
funktioniert nicht im strikten Modus);hh
anstelle des 24-Stunden -HH
;S
für Sekundenbruchteile, aber Eingang hat drei.InformationsquelleAutor Roman
Ihre ursprüngliche problem war falsche Muster, symbol "h" steht für-die-Uhr-Stunden (range 1-12). In diesem Fall wird die am-pm-Informationen fehlen. Besser, verwenden das Muster, symbol "H" statt (Stunde des Tages im Bereich 0-23). Also das Muster sollte eher so gewesen sein:
uuuu-MM-dd NICHT'HH:mm:ss.SSSX (am besten Muster auch geeignet für den strikten Modus)
InformationsquelleAutor Meno Hochschild
Folgende für mich gearbeitet
mir und schenkte mir die Ausgabe als
InformationsquelleAutor daydreamer