Ich muss eine Liste von Zeitstempeln lesen und sortieren sie von "älteste" und "neueste" um. Aber bevor ich sie sortieren kann, muss ich sie zuerst neu formatieren. Diese Zeitstempel sind in folgendem Format:Verwenden von Regex zum Extrahieren und Neuformatieren von Timestamp der einzige Weg?
mm: hh PM/AM dd Monat (egJun) yyyy,
Zum Beispiel:
- 3:40 PM 1 Jun 2016
- 11:40 11 Jun 2016
Ich verwende Regex, um jeden Zeitstempel in ein Format zu extrahieren und neu zu formatieren, das Java erkennt, z. dd Monat (. Z Juni) yyyy hh: mm
Was ich habe, wie folgend getan ist:
package regularExpressionDate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regularExpressionDate {
public static void main(String[] args) {
String pattern = "^(\\d{1,2}):(\\d{1,2})\\s(PM|AM)\\s(\\d{1,2})\\s(\\w{3})\\s(\\d{4})$";
String date1 = "3:40 PM 1 Jun 2016";
String newDate1;
int hour;
Pattern r = Pattern.compile(pattern);
Matcher m1 = r.matcher(date1);
if(m1.find()) {
hour = Integer.parseInt(m1.group(1));
if(m1.group(3).equals("PM")) {
hour+=12;
System.out.println(m1.group(3));
}
newDate1 = (m1.group(4) + " " + m1.group(5) + " " + m1.group(6) + " " + hour + ":" + m1.group(2));
System.out.println(newDate1);
}
else {
System.out.println("No match");
}
}
}
Für die Eingabe 3:40 PM 1 Jun 2016
, ich habe 1 Jun 2016 15:40
.
Meine Frage ist:
- Mein Ansatz ist der beste Weg, mein Ziel im Hinblick auf die Klarheit und Effizienz zu erreichen? Ich hatte gehofft, dass es eine Methode geben würde, die sofort in das von Java erkannte Timestamp-Format umwandeln könnte, aber ich habe es nicht gefunden.
Werfen Sie einen Blick auf [ 'SimpleDateFormat'] (https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)? –
@RC., Danke werden Sie tun –
Sie können das Datum als Nummer nach dem Parsen sie sortieren. Sie müssen sie nicht als Strings sortieren. –