Ist es ein gutes Datum-parser für Java?
Kennt jemand ein gutes Datum-parser für verschiedene Sprachen/locales. Die built-in-parser von Java ("=SimpleDateFormat) ist sehr streng. Es sollte komplett fehlenden Teile, die mit dem aktuellen Datum.
Beispielsweise
- wenn ich nicht geben Sie das Jahr ein (nur Tag und Monat), dann wird das aktuelle Jahr verwendet werden soll.
- wenn das Jahr 08 dann sollte es nicht analysieren 0008, weil die aktuellen Jahres-Muster ist 4-stellig.
Edit: ich will zum analysieren von Eingaben von einem Benutzer. Zum Beispiel, wenn das Gebietsschema Datumsformat der Benutzer "dd.mm.JJJJ" und die user geben nur "12.11. dann der parser akzeptieren sollte, wie ein gültiges Datum mit dem Wert "12.11.2008". Das Ziel ist eine gute usability.
InformationsquelleAutor der Frage Horcrux7 | 2008-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen, Joda Time, und seine Freaky-Formatter. http://joda-time.sourceforge.net/userguide.html#Input_and_Output
Java 8 enthält JSR-310 so, dass könnte eine Lösung sein, wie gut.
InformationsquelleAutor der Antwort Petteri Hietavirta
Vom Drei und vierzig tausend sechs hundert zwei und vierzigwenn auch nicht unbedingt eine doppelte:
Sehen, Apache Commons' DateUtils. Es gibt eine
parseDate
Methode, die IhrenString
und mehrere Muster, um zu versuchen und spuckt eineDate
Instanz.InformationsquelleAutor der Antwort Joe Liversedge
(Bearbeitet für Klarheit.)
Persönlich, ich denke, streng ist gut. So viele unterschiedliche Situationen erfordern unterschiedliche Regeln, um entspannt zu analysieren, ist es unmöglich, wirklich zu setzen, die in eine gemeinsame Bibliothek umfassend.
Aber ich würde durchaus empfehlen Joda Time statt der eingebaute Datum - /Zeit-Klassen im Allgemeinen. Ihre Formatierer und Parser sind threadsicher und unveränderlich, das hilft auch. Joda Zeit hat einige Unterstützung für die entspannte analysieren, wie in der anderen Antwort, aber Sie sollten erwarten, dass einige der Regeln selbst.
InformationsquelleAutor der Antwort Jon Skeet
Ich würde sagen JChronic wenn Sie auf der Suche nach etwas, analysieren Daten aus der natürlichen "fuzzy" human input.
Ich habe sowohl JChronic und Chronischen (das original-Ruby-version) mit großem Erfolg.
InformationsquelleAutor der Antwort madlep
tl;dr
java.Zeit.format.DateTimeFormatterBuilder::parseDefaulting
java.Zeit
Den
DateTimeFormatter
Klasse parst den String in ein Datum-Uhrzeit-Objekte.Können Sie individuelle Instanzen von
DateTimeFormatter
mithilfe derDateTimeFormatterBuilder
Klasse. Das builder-Klasse können Sie angeben, default-Werte für fehlende Komponenten der input-string.Siehe auch DateTimeFormatterBuilder mit angegeben parseDefaulting Konflikte für das JAHR Bereich.
Ü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
Den POJava Projekt auf SourceForge hat ein DateTime-Objekt, das analysiert Daten aus mehreren Sprachen (wenn der Monat angegeben wird, als einen Namen) und ist konfigurierbar zwischen MM-DD-JJJJ und TT-MM-JJJJ. Es analysiert Daten heuristisch, Kommissionierung die meisten wahrscheinlich, Jahr, Monat, Datum, Stunde, minute, Sekunde und Zeitzone eher als Unterstützung vordefinierte Formate. Die jar-Datei ist über 60K in der Größe.
Gibt es Unklarheiten bei der interpretation des Datums wie "10-08", dass es sein könnte, soll als Kürzel entweder für "2008-10-08" oder "Oct 2008". Man könnte anfügen, das Jahr selbst, wenn Sie akzeptieren die Art von Kurzschrift, geben Sie in Ihrem Beispiel.
Proj: POJava
Docs: HOWTO verwenden DateTime
InformationsquelleAutor der Antwort
Verwenden DateFormat ... Aktuellen standard, bis die willkommene Abwechslung von Joda.
InformationsquelleAutor der Antwort Ichorus
Kalender ist in der Regel der Weg zu gehen, aber verstehen, dass die meisten Java-Datum-management behandelt werden, wenn Sie wollen, dass es richtig gemacht. Timezone ist eine gute Sache, zu schauen, wenn Sie Führung von internationalen/cross-zone info. Joda Time ist auch eine nette Sache und ist die inspiration hinter der neuen vorgeschlagenen Datum/Zeit-Konzepte Hinzugefügt, um Java in JSR 310.
Hoffe, das ist hilfreich.
InformationsquelleAutor der Antwort codeLes
Habe ich versucht zu implementieren, die eine erweiterbare PHP
strtotime
in Java in dieser AntwortInformationsquelleAutor der Antwort dfa
Ich würde sagen +1 für JodaTime. Zusätzlich zu Parsen, Joda lässt nur etwa jeder Datum-bezogene operation besser.
InformationsquelleAutor der Antwort Joey Gibson