Ich habe ein Datum als Zeichenfolge im folgenden Format "04/02/2011 20:27:05"
. Ich verwende die Joda-Time-Bibliothek und möchte sie in ein DateTime
Objekt konvertieren . Ich tat:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Aber ich bekomme folgenden Fehler:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
Wie konvertiere ich das obige Datum in ein DateTime
Objekt?
java.time
Paket in Java 8 analysieren können , versuchen Sie es mitLocalDateTime.parse
oderInstant.parse
.Antworten:
Verwendung
DateTimeFormat
:quelle
toString
Funktion angewendet wird, aber ich kann nicht daraus analysieren :Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. Ist das ein bekanntes Problem? Wie kann ich das vermeiden? Grüße.Ich weiß, dass dies eine alte Frage ist, aber ich wollte hinzufügen, dass Sie dies ab JodaTime 2.0 mit einem Einzeiler tun können:
quelle
quelle
Aus Kommentaren habe ich eine Antwort wie ausgewählt und auch TimeZone hinzugefügt:
quelle
Ihr Format entspricht nicht dem erwarteten ISO-Format. Versuchen Sie es
quelle
Sie können auch SimpleDateFormat wie in verwenden
DateTimeFormat
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle . Und die java.time-Klassen sind im Gegensatz zu den Legacy-Klassen threadsicher.Sie benötigen einen DateTimeFormatter , der dem von Ihnen verwendeten Format entspricht. In den Dokumenten finden Sie Anweisungen zum Erstellen eines Dokuments.
Aus der Manschette, ich denke du brauchst
format = DateTimeFormat.forPattern("M/d/y H:m:s")
quelle
tl; dr
java.time
Der moderne Ansatz verwendet die Klassen java.time, die die ehrwürdige Joda-Zeit ersetzen Projekt .
Bei der Analyse als
LocalDateTime
Eingabe fehlt jede Anzeige für die Zeitzone oder den Versatz von UTC.Tipp: Verwenden Sie nach Möglichkeit die Norm ISO 8601 , wenn Sie Datums- und Uhrzeitwerte als Text anstelle des hier Formats austauschen. Praktischerweise verwenden die java.time-Klassen die Standardformate beim Parsen / Generieren von Zeichenfolgen.
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie
java.util.Date
,Calendar
, &SimpleDateFormat
.Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration auf java.time Klassen .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden
Interval
,YearWeek
,YearQuarter
, und mehr .quelle
Eine einfache Methode:
quelle
Es gibt zwei Möglichkeiten , dies könnte erreicht .
DateTimeFormat
SimpleDateFormat
quelle
SimpleDateFormat
ist es meiner ehrlichsten Meinung nach schlecht , den noch länger veralteten und notorisch lästigen Vorschlag zu machen .