Java - Unparseable Datum
Ich versuche, um ein Datum zu analysieren, aber ich bin komischerweise immer eine Ausnahme.
Dies ist der code:
import java.util.Date;
String strDate = "Wed, 09 Feb 2011 12:34:27";
Date date;
SimpleDateFormat FORMATTER = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
try {
date = FORMATTER.parse(strDate.trim());
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
Ausnahme ist:
java.text.ParseException: Unparseable
Datum: "Wed, 09 Feb 2011 12:34:27" bei
java.text.DateFormat.parse(DateFormat.java:337)
bei DateTest.main(DateTest.java:17)
Habe ich gelesen, das Dokumentation und ich denke, mein Muster ist richtig. Also, ich verstehe nicht...
Irgendeine Idee?
Dank!
InformationsquelleAutor der Frage Amokrane Chentir | 2011-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wahrscheinlich, weil der Standard-Gebietsschema auf Ihrem computer, die nicht Englisch ist.
Sollten Sie verwenden:
statt.
InformationsquelleAutor der Antwort a_horse_with_no_name
tl;dr
Details
Die Frage und andere Beantworten die Verwendung veralteter lästig alten Datum-Zeit-Klassen, die jetzt Erbe, verdrängt durch die java.Zeit-Klassen.
Mit java.Zeit
Den input-string fehlt jede Angabe einer Zeitzone oder offset von UTC. Also wir analysieren als
OffsetDateTime
.Angeben
Locale
um zu bestimmen, a) die menschliche Sprache für die übersetzung der Namen von Tag, name des Monats, und wie, und (b) die kulturellen Normen zu entscheiden, Fragen von Abkürzungen, groß-und Kleinschreibung, Interpunktion, Separatoren, und so.Zeitzone
Sowohl die Frage und andere Antworten ignorieren das entscheidende Problem der Zeitzone.
Den input-string fehlt ein Zeit-zone oder offset. Wir analysiert, wie ein
LocalDateTime
die nicht einen moment auf der timeline, nur eine vage Vorstellung über mögliche Momente. Wie wenn man sagt: "Weihnachten beginnt um Mitternacht am 25. Dezember 2017", hat das keine Bedeutung, bis Sie es in den Kontext einer bestimmten Zeitzone. Weihnachten kommt viel früher in Auckland, Neuseeland, als es in Paris, Frankreich, und viel später noch in Montréal und Québec.Wenn Sie wissen, die beabsichtigte Zeit-zone, zuweisen
ZoneId
zu produzierenZonedDateTime
.Umwandlung
Am besten, um den lästigen alten legacy-Datum-Zeit-Klassen. Aber wenn Sie interagieren müssen, mit dem alten code noch nicht aktualisiert auf java.Zeit-Typen, können Sie konvertieren zwischen den legacy-Klassen und java.Zeit. Suchen Sie neue Methoden hinzufügen, um die alten Klassen.
Einen
java.util.Date
einen moment auf der Zeitachse in UTC. Also müssen wir extrahieren Sie eineInstant
von unsererZonedDateTime
. DieInstant
Klasse repräsentiert einen moment auf der Zeitachse, UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern eines dezimalbruchs).In die andere Richtung.
Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte Vermächtnis Datum-Zeit-Klassen wie
java.util.Date
Calendar
&" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartungsmodusrät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Können Sie exchange java.Zeit Objekte direkt mit Ihrer Datenbank. Verwenden Sie eine JDBC-Treiber kompatibel mit JDBC 4.2 oder später. Keine Notwendigkeit für Streicher, keine Notwendigkeit für
java.sql.*
Klassen.Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
YearWeek
YearQuarter
und mehr.InformationsquelleAutor der Antwort Basil Bourque