2つの日付を文字列形式で比較する最も簡単な方法は何ですか? date1
は、後/前に来ますdate2
。
String date1 = "2015-12-01";
String date2 = "2015-12-31";
より一般的なアプローチとして、これらを両方とも定義済みフォーマットのDate
オブジェクトに変換してから、適切なメソッドを使用できます。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(date1);
Date date2 = format.parse(date2);
if (date1.compareTo(date2) <= 0) {
System.out.println("earlier");
}
この場合、文字列date1.compareTo(date2)
を比較できます。
編集:ただし、適切な方法はSimpleDateFormat
を使用することです:
DateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = f.parse(date1, new ParsePosition(0));
Date d2 = f.parse(date2, new ParsePosition(0));
そして日付を比較します:
d1.compareTo(d2);
比較は、d1
がd2
の前にある場合は負の値を返し、d1
がd2
の後にある場合は正の値を返します。
JodaTimeを使用すると、簡単に次のことができます。
DateTime d1 = DateTime.parse(date1);
DateTime d2 = DateTime.parse(date2);
Assert.assertTrue(d1.isBefore(d2));
Assert.assertTrue(d2.isAfter(d1));
それらをDate
オブジェクトに変換することをお勧めします。
String date1 = "2015-12-01";
String date2 = "2015-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(date1).before(sdf.parse(date2)));
次のようにそれらを比較する:
if(date2 .compareTo(date1) > 0){
System.out.println(" ---- ");
}
柔軟性が失われ、独自の問題が発生する可能性があるため、理想的なオプションではありません(date1およびdate2は文字列です)。
文字列を日付に変換するだけです:
Date date1 = sdf.parse("2015-12-01");
Date date2 = sdf.parse("2010-01-01");
次に、比較は次のように行われます:if(date1.after(date2)){System.out.println( "Date1 is after Date2"); }
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
私が正しく覚えていれば、処理するParseException
があります
はい、これを次のように比較できます。
Date date1 = new Date();
Date date2 = new Date();
if(date1.before(date2)){
// statement
}
if(date1.after(date2)){
// statement
}