Ich habe eine Anforderung, wo Datum in den folgenden Formaten übergeben werden kann, bevor sie zu Solr indiziert werden. Hier sind die Beispiele der übermittelten Daten Wie erstellt man einen generischen Datumsformatierer in Java für Solr?
String dateStr = "2012-05-23T00:00:00-0400";
String dateStr1 = "May 24, 2012 04:57:40 GMT";
String dateStr2 = "2011-06-21";
Das Standard-Solr-Format ist
"JJJJ-MM-TT'T'HH: mm: SS'Z '".
Ich habe SimpleDateFormat ausprobiert aber ist nicht in der Lage, ein generisches Programm zu schreiben, um verschiedene Formate zu unterstützen. Es endet mit Parsen Ausnahmen.
Ich habe auch versucht, joda Zeit, aber bisher nicht gelungen in UTC-Konvertierung.
public static String toUtcDate(final String iso8601) {
DateTime dt = ISO_PARSE_FORMAT.parseDateTime(iso8601);
DateTime utcDt = dt.withZone(ZONE_UTC);
return utcDt.toString(ISO_PRINT_FORMAT);
}
Gibt es eine Standardbibliothek, um dies zu erreichen?
Alle Hinweise werden geschätzt.
Dank
Vielen Dank für Ihre Antwort. Ich habe versucht, diese Lösung zu vermeiden und zu suchen, ob es eine generische gibt, die für jedes Datumsformat geeignet ist, solange es gültig ist. Das Problem bei diesem Ansatz ist immer, dass es ein neues Format gibt, der Code bricht, wenn wir ihn nicht im Array hinzufügen. Ich habe gehofft, wenn es ein verfügbares Tool gibt, das dies bereits ermöglicht. – Shamik
Ich habe einmal so etwas geschrieben, und ich konnte nur ungefähr ein Dutzend oder so denken - Leute verwenden nicht so viele verschiedene Datumsformate tatsächlich. Das Hauptproblem war, zu entscheiden, ob '01-02-2012' Jan oder Feb ist, weil es sowohl mit ISO' dd-MM-yyyy' * als auch mit dem dummen amerikanischen Format 'MM-dd-yyyy' richtig analysiert werden kann. – Bohemian
Das amerikanische Format ist leicht visuell zu analysieren. Und es "dumm" zu nennen, ist keine Möglichkeit, für einen Mangel an richtigem i18n zu antworten. –