Die anderen Antworten waren in Ordnung Antworten im Jahr 2012. Hier ist ein Beispiel dafür, wie mit den modernen (2014) Java Datum und Uhrzeit Klassen zu tun: von einer doppelten Frage
System.out.println("date de la requete est " + dateq);
DateTimeFormatter dtf = DateTimeFormatter
.ofPattern("EEE MMM dd HH:mm:ss xx uuuu", Locale.ROOT);
OffsetDateTime dateTime1 = OffsetDateTime.parse(dateq, dtf);
System.out.println("new date " + dateTime1);
Das Codebeispiel wurde inspiriert (als Ich sehe es), How to convert Xml String date to int in java. Mit dem Beispiel String aus dieser Frage druckt:
date de la requete est Tue Feb 08 12:30:27 +0000 2011
new date 2011-02-08T12:30:27Z
Q: (?) Ich kann nicht die neueren Klassen auf Android verwenden
A: Ja, das können Sie. Verwenden Sie für Android den speziell auf Android zugeschnittenen Backport, ThreeTenABP. Verwenden Sie andernfalls für Java 6 und 7 ThreeTen Backport.
Q: Ihr Code funktioniert nicht für die Datum-Uhrzeit-Zeichenfolge in diese Frage!
A: (1) Wenn möglich, vermeiden Sie die drei- und vierstelligen Zeitzonenabkürzungen wie CEST. Viele sind mehrdeutig und die Interpretation kann sogar mit der aktuellen Zeitzoneneinstellung Ihrer JVM variieren. CEST ist nur die Sommerhälfte einer Zeitzone, keine Vollzeitzone. (2) Wenn Sie keine Zeichenfolge ohne CEST
oder ähnlich darin erhalten können, versuchen Sie ZonedDateTime
anstelle von OffsetDateTime
und verwenden Sie zzz
im Format Muster wie in der Frage. Dies funktioniert im Beispiel und erzeugt 2012-04-08T16:37+02:00[Europe/Paris]
.
Frage: Wie verwende ich die neueren Klassen?
A: Ein guter Ausgangspunkt ist die Oracle Tutorial.
Q: Locale.ROOT
??
A: Wenn Ihr Datum/Uhrzeit-String von einem bestimmten Ort in der Welt und in der Sprache dieses Ortes kommt, verwenden Sie natürlich das entsprechende Gebietsschema. Wenn es nur auf Englisch ist, weil Computersysteme überall dazu neigen, Englisch auszugeben, verwende ich lieber Locale.ROOT
für das Gebietsschema "neutrales Gebietsschema", wie "nichts Gebietsspezifisches hier tun".
Ja. Eine zweite 'd' –
Danke, aber immer noch die gleiche Ausnahme. – Domiik
Nein, tut es nicht. Versuchen Sie, Ihren Code neu zu kompilieren, nachdem Sie Änderungen vorgenommen haben. (Es sei denn, Sie haben ein seltsames Gebietsschema-Problem) –