日時を加算/減算する(add)

広告

Calendarクラスのオブジェクトが持っている日時に関する値に対して、カレンダーフィールドを指定してそのフィールドの値を指定した値だけ加算/減算させます。

add
public abstract void add(int field, int amount)

カレンダの規則に基づいて、指定された時間量を指定されたカレンダフィールドに加算または減算します。たとえば、カレンダの現在時刻から 5 日を引く場合は、次の呼び出しを実行します。

add(Calendar.DAY_OF_MONTH, -5)

パラメータ:
field - カレンダフィールド
amount - フィールドに追加される日付または時刻の量

例えば日を1ずつ増加させていき、その月の最後の日になりさらに追加すると月が1増加され日は1に戻ります。ただ注意する点としては日が31日などの場合に月を1だけ増加させた場合、増加後の月が30日までしか無い場合などは日も30に変更されます。その後に31日まである月になったとしても日は30日のままです。

サンプルプログラム

では実際に試してみましょう。

testCalendar3.java

import java.util.Calendar;

class testCalendar3{
  public static void main(String args[]){

    Calendar calendar = Calendar.getInstance();

    System.out.println("日時を2005/12/30に設定します");
    calendar.set(2005, 11, 30);
    dispCalendar(calendar);

    System.out.println("-- -- -- -- -- --");

    System.out.println("日を1ずつ増加させます");
    for (int i = 0 ; i < 6 ; i++){
      calendar.add(Calendar.DAY_OF_MONTH, 1);
      dispCalendar(calendar);
    }

    System.out.println("-- -- -- -- -- --");

    System.out.println("日時を2006/1/31に設定します");
    calendar.set(2006, 0, 31);
    dispCalendar(calendar);

    System.out.println("-- -- -- -- -- --");

    System.out.println("月を1ずつ増加させます");
    for (int i = 0 ; i < 4 ; i++){
      calendar.add(Calendar.MONTH, 1);
      dispCalendar(calendar);
    }
  }

  private static void dispCalendar(Calendar calendar){
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DATE);

    StringBuffer sb = new StringBuffer();
    sb.append("設定されている日時は");
    sb.append(year + "年" + month + "月" + day + "日");
    sb.append("です。");

    System.out.println(new String(sb));
  }
}

上記を実際にコンパイルして実行してみると下記のようになります。

p3

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。