Javaサンプルコード辞典

Calendar - 日付を比較する

コマンドラインから入力された2つの日付を比較するサンプルコードです。日付の比較には、「java.util.Calendar」クラスを使用します。

「Calendar」クラスは、任意の一時点の日付、時間の取得や日付計算を行うためのクラスです。「Calendar」クラスは抽象クラスで、インスタンスの取得は静的メソッド「getInstance()」で行います。引数なしのgetInstance()は、デフォルトのタイムゾーンとロケールのカレンダを返却します。日付の比較を行うために、コマンドラインに入力された日付を「Calendar」クラスのインスタンスに設定します。設定は「set()」メソッドに「Calendar」クラスに定義されている年、月などを示す定数と設定する値を指定して行います。日付の設定ができたら、それぞれの日付のカレンダーインスタンスを、「compareTo()」メソッドを使用して比較します。a.compareTo(b)として、正の値が返却された場合は、aがbより後の日付であることを表しています。0の場合は、同日、負の値が返却された場合はaがbより前の日付であることを表しています。「compareTo()」メソッドはJava1.5以降のメソッドですので、それ以前のバージョンでは、「after()」と「before()」メソッドを使用してください。
import java.util.Calendar;

//コマンドライン引数で指定された2つの日付を比較して結果を標準出力に表示する
//コマンドライン第1引数:[比較する日付文字列1 yyyymmdd] (例:20071011)
//コマンドライン第2引数:[比較する日付文字列2 yyyymmdd] (例:20071012)
public class CompareDate {

      public static void main(String[] args) {
            
            System.out.println("--処理開始--");
            
            //コマンドライン引数が入力されているかチェックを行う
            if(args.length < 2)
            {
                  System.out.println("コマンドライン引数を指定してください");
                  return;
            }
            
            try
            {
                  //コマンドライン引数1を年、月、日に分けてint型に変換する
                  int year1 = Integer.parseInt(args[0].substring(0,4));
                  int month1 = Integer.parseInt(args[0].substring(4,6));
                  int date1 = Integer.parseInt(args[0].substring(6,8));
                  
                  //引数1用のカレンダー
                  Calendar cal1 = Calendar.getInstance();
                  
                  //cal1にコマンドライン引数1で指定された年、月、日を設定する
                  //分、秒、ミリ秒については0を設定する
                  cal1.set(Calendar.YEAR,year1);
                  cal1.set(Calendar.MONTH,month1);
                  cal1.set(Calendar.DATE,date1);
                  cal1.set(Calendar.MINUTE,0);
                  cal1.set(Calendar.SECOND,0);
                  cal1.set(Calendar.MILLISECOND,0);
                  
                  //コマンドライン引数2を年、月、日に分けてint型に変換する
                  int year2 = Integer.parseInt(args[1].substring(0,4));
                  int month2 = Integer.parseInt(args[1].substring(4,6));
                  int date2 = Integer.parseInt(args[1].substring(6,8));
                  
                  //引数2用のカレンダー
                  Calendar cal2 = Calendar.getInstance();
                  
                  //cal2にコマンドライン引数2で指定された年、月、日を設定する
                  //分、秒、ミリ秒についてはcal1と同様に0を設定する
                  cal2.set(Calendar.YEAR,year2);
                  cal2.set(Calendar.MONTH,month2);
                  cal2.set(Calendar.DATE,date2);
                  cal2.set(Calendar.MINUTE,0);
                  cal2.set(Calendar.SECOND,0);
                  cal2.set(Calendar.MILLISECOND,0);
                  
                  //compareTo()メソッドを使用して、引数1と引数2を比較する
                  int result = cal1.compareTo(cal2);
                  
                  //結果が0より大きい場合
                  if(result > 0)
                  {
                        System.out.println(args[0] + "が" + args[1] + "よりも後");
                  }
                  //結果が0より小さい場合
                  else if(result < 0)
                  {
                        System.out.println(args[0] + "が" + args[1] + "よりも前");
                  }
                  //結果が0の場合
                  else
                  {
                        System.out.println("同じ日");
                  }            
            }
            catch(NumberFormatException e)
            {
                  System.out.println(e);
            }      
            
            System.out.println("--処理終了--");
      }
}

(2007年11月3日)  

 ちょっと一休み. Javaキーワード並び替えゲーム

画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。 ユーザ登録をしてログインするとランキングに参加できます。
Flex Tips

DWRでリッチなWebページを作る!

Java Tips  java.io 編

Java Tips  java.lang 編