概要
日付を扱うクラスjava.util.Date。
その中で日付の大小(前後)を比較するときに使用するメソッド2つ。
・public boolean after(Date when)
・public boolean before(Date when)
コーディング作業中にDateオブジェクトと引数どちらにどれを指定すればよいの??
未来日?過去日?…同日はどういう結果になるのだ??
と混乱したため忘備録として各種サンプルと実行結果を記載。
実行サンプル
BeforeAfterTest
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BeforeAfterTest {
// 日付文字列指定でDate型を生成
public static Date toDate(String str) {
// 日付フォーマットを作成
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
// Date型へ変換
try {
return dateFormat.parse(str);
} catch ( ParseException e ) {
return null;
}
}
public static void main(String[] args) {
Date a = toDate("2014/01/01");
Date b = toDate("2013/01/01");
System.out.println("A:" + a);
System.out.println("B:" + b);
System.out.println("a.after(b)の結果:" + a.after(b));
System.out.println("b.after(a)の結果:" + b.after(a));
System.out.println("a.before(b)の結果:" + a.before(b));
System.out.println("b.before(a)の結果:" + b.before(a));
System.out.println("a.after(a)の結果:" + a.after(a));
System.out.println("a.before(a)の結果:" + a.before(a));
}
}
・実行結果(AがBより未来日の場合の実行結果)
A:Wed Jan 01 00:00:00 JST 2014
B:Tue Jan 01 00:00:00 JST 2013
a.after(b)の結果:true
b.after(a)の結果:false
a.before(b)の結果:false
b.before(a)の結果:true
a.after(a)の結果:false
a.before(a)の結果:false