[API] java.util.Calendar抽象クラス

java.util.Calendarクラスは日時を扱うときに使用するクラスです。

java.util.Calendarについて

java.util.Calendarクラスは比較的古くからある日付や時刻を扱うクラスです。

Java SE8以降では日時の操作は、java.timeパッケージのクラスを使用することが推奨されます。

java.util.Calendarの継承・実装

継承クラス

java.lang.Object
 ・java.util.Calendar

実装インターフェース

java.io.Serializable
java.lang.Cloneable
・java.lang.Comparable<Calendar>

導入バージョン

・JDK1.1

java.util.CalendarのAPI

【月に関する定数】
定数説明
intCalendar.JANUARY1月を表す定数
intCalendar.FEBRUARY2月を表す定数
intCalendar.MARCH3月を表す定数
intCalendar.APRIL4月を表す定数
intCalendar.MAY5月を表す定数
intCalendar.JUNE6月を表す定数
intCalendar.JULY7月を表す定数
intCalendar.AUGUST8月を表す定数
intCalendar.SEPTEMBER9月を表す定数
intCalendar.OCTOBER10月を表す定数
intCalendar.NOVEMBER11月を表す定数
intCalendar.DECEMBER12月を表す定数
【曜日に関する定数】
定数説明
intCalendar.SUNDAY日曜日を表す定数
intCalendar.MONDAY月曜日を表す定数
intCalendar.TUESDAY火曜日を表す定数
intCalendar.WEDNESDAY水曜日を表す定数
intCalendar.THURSDAY木曜日を表す定数
intCalendar.FRIDAY金曜日を表す定数
intCalendar.SATURDAY土曜日を表す定数
【その他定数】
定数説明
intCalendar.YEAR年を表す定数
intCalendar.MONTH月を表す定数
intCalendar.DATE月の日を表す定数
intCalendar.DAY_OF_YEAR年の何日目かを表す定数
intCalendar.DAY_OF_MONTH月の日を表す定数(DATEと同じ)
intCalendar.DAY_OF_WEEK週の何日目かを表す定数
intCalendar.DAY_OF_WEEK_IN_MONTH現在の月の何回目の曜日かを表す定数
intCalendar.HOUR
intCalendar.MINUTE
intCalendar.SECOND
intCalendar.MILLISECONDミリ秒
intCalendar.WEEK_OF_YEAR現在の年の何週目かを表す定数
intCalendar.WEEK_OF_MONTH現在の月の何週目かを表す定数
intCalendar.AM_PM午前・午後を表す定数
intCalendar.AM午前
intCalendar.PM午後
intCalendar.HOUR_OF_DAY現在の日で時間を表す定数
intCalendar.ERA年代を表す定数(BC, AD)
【主要メソッド】
戻値型メソッド静的説明
CalendargetInstance()Calendarインスタンスを取得する
intget(int f)フィールドの値を取得する
voidset(int f, int v)フィールドの値をセットする
voidset(int y, int m, int d)y年、m月、d日をセットする
(月は、1月→0 ~ 12月→11)
voidadd(int f, int v)フィールドの値を加減算する
DategetTime()Date型で取得する
voidsetLenient(boolean b)値の解釈を厳密に行うかどうかを設定する
※下の「setLenientメソッドサンプル」参照
voidclear()日付情報をクリアする
(1970年1月1日 00:00:00になる)
voidclear(int f)指定したフィールドの日付情報をクリアする
booleanafter(Calendar c)引数の方が過去の場合はtrue
※下の「Calendarの比較サンプル」参照
booleanbefore(Calendar c)引数の方が未来の場合はtrue
※下の「Calendarの比較サンプル」参照
intgetActualMaximum(int f)指定したフィールドが取りうる最大値を返す
intgetActualMinimum(int f)指定したフィールドが取りうる最小値を返す
longgetTimeInMillis()Calendarの時刻値をミリ秒で返す
(日時をセットする)

//年、月、日をセットする(個別)
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1988);   //1988年
cal.add(Calendar.MONTH, 1);     //2月
cal.add(Calendar.DATE, 11);     //11日

//年、月、日をセットする(一括)
Calendar cal = Calendar.getInstance();
cal.set(2006, 1, 11);    //2006年2月11日

//年、月、日、時、分をセットする(一括)
Calendar cal = Calendar.getInstance();
cal.set(2006, 1, 11, 22, 9);    //2006年2月11日22時9分

//年、月、日、時、分、秒をセットする(一括)
Calendar cal = Calendar.getInstance();
cal.set(2006, 1, 11, 22, 9, 59);    //2006年2月11日22時9分59秒
(日時の加減算)

//1年加算する
cal.add(Calendar.YEAR, 1);

//1ヶ月減算する
cal.add(Calendar.MONTH, -1);
(フィールドの値をクリアする)

//年を未定義にする
cal.clear(Calendar.YEAR);

//全てのフィールドを未定義にする
cal.clear();
(Calendarの比較)

cal2であるかを比較する
boolean b = cal1.after(cal2);

//cal1<cal2であるかを比較する
boolean b = cal1.before(cal2);
※ after、before共にイコールの場合はfalse
(setLenientメソッド)

//値を厳密に解釈しない場合
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 7);    //8月を指定
cal.setLenient(true);
cal.set(Calendar.DATE, 32);    //32日はありえないが、9月1日としてセットされる
→エラーにはならない

//値を厳密に解釈する場合
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.set(Calendar.DATE, 32);    //32日はありえないためエラーとなる
→エラーになる

java.util.Calendarサンプルソース

(Calendarの要素を取得して表示する例)

import java.util.Calendar;

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

    //Calendarを生成
    Calendar cal = Calendar.getInstance();

    //画面出力
    System.out.println("YEAR: " + cal.get(Calendar.YEAR));
    System.out.println("MONTH: " + cal.get(Calendar.MONTH));
    System.out.println("DATE: " + cal.get(Calendar.DATE));
    System.out.println("HOUR: " + cal.get(Calendar.HOUR));
    System.out.println("MINUTE: " + cal.get(Calendar.MINUTE));
    System.out.println("SECOND: " + cal.get(Calendar.SECOND));
    System.out.println("MILLISECOND: " + cal.get(Calendar.MILLISECOND));
    System.out.println("DAY_OF_YEAR: " + cal.get(Calendar.DAY_OF_YEAR));
    System.out.println("DAY_OF_MONTH: " + cal.get(Calendar.DAY_OF_MONTH));
    System.out.println("DAY_OF_WEEK: " + cal.get(Calendar.DAY_OF_WEEK));
    System.out.println("DAY_OF_WEEK_IN_MONTH: " +
                                  cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
    System.out.println("WEEK_OF_YEAR: " + cal.get(Calendar.WEEK_OF_YEAR));
    System.out.println("WEEK_OF_MONTH: " + cal.get(Calendar.WEEK_OF_MONTH));
    System.out.println("AM_PM: " + cal.get(Calendar.AM_PM));
    System.out.println("HOUR_OF_DAY: " + cal.get(Calendar.HOUR_OF_DAY));
    System.out.println("ERA: " + cal.get(Calendar.ERA));
  }
}
(実行結果)※2011年8月30日 11時35分24秒284 に実行した場合
C:\>java CalendarSample YEAR: 2011 MONTH: 7 DATE: 30 HOUR: 11 MINUTE: 35 SECOND: 24 MILLISECOND: 284 DAY_OF_YEAR: 242 DAY_OF_MONTH: 30 DAY_OF_WEEK: 3 DAY_OF_WEEK_IN_MONTH: 5 WEEK_OF_YEAR: 36 WEEK_OF_MONTH: 5 AM_PM: 0 HOUR_OF_DAY: 11 ERA: 1

月は、0~11の数値で表されるのでご注意ください。(1月→0 ~ 12月→11)

コメント

タイトルとURLをコピーしました