タイムスタンプのリストを読み、「最も古い」と「最新」オーダーで並べ替える必要があります。しかし、私はそれらを並べ替えることができる前に、私はそれらを最初に再フォーマットする必要があります。これらのタイムスタンプは次の形式である:regexを使ってタイムスタンプを抽出して再フォーマットする方法はありますか?
ミリメートル:HHのPM/AMのDD月(egJun)YYYY、例えば
:
- 15:40 2016年6月1日
- 11:40 am 11 6月2016
私はRegexを使って各タイムスタンプを抽出し、Javaが認識するフォーマットに再フォーマットしています。 DD月(例えば6月)YYYY HH:MM
私がやったことは以下の通りである:
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");
}
}
}
を入力3:40 PM 1 Jun 2016
ために、私は1 Jun 2016 15:40
を得ました。
私の質問は:
- は私のアプローチ明快さと効率の面で私の目標を達成するための最良の方法ですか?私は、Javaに変換できるメソッドがすぐにタイムスタンプ形式を認識することを期待していましたが、私はそれを見つけられませんでした。
[ 'SimpleDateFormat'](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)を見てみましょうか? –
@RC。、ありがとうございます –
日付を解析した後に日付を並べ替えることができます。それらを文字列としてソートする必要はありません。 –