Javaちょこっとリファレンス
HOME > 日付を扱う(Calendar型)

日付を扱う(Calendar型)

特定の日時の設定や日時の計算を行いたい場合は、java.util.Calendarクラスが便利です。

サンプルソースコード

Calendarサンプル(2011年8月30日 11時35分24秒284 に実行とする)
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));

    }
}

実行結果
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)

表示形式を指定の形式で表示したい場合は、java.text.SimpleDateFormatクラスを使用すれば簡単に実現できます。(YYYY/MM/DD 形式で表示したいなど)
日付をフォーマットするを参照ください。

主要定数

【月に関する定数】
定数説明
JANUARY1月を表す定数
FEBRUARY2月を表す定数
MARCH3月を表す定数
APRIL4月を表す定数
MAY5月を表す定数
JUNE6月を表す定数
JULY7月を表す定数
AUGUST8月を表す定数
SEPTEMBER9月を表す定数
OCTOBER10月を表す定数
NOVEMBER11月を表す定数
DECEMBER12月を表す定数
【曜日に関する定数】
定数説明
SUNDAY日曜日を表す定数
MONDAY月曜日を表す定数
TUESDAY火曜日を表す定数
WEDNESDAY水曜日を表す定数
THURSDAY木曜日を表す定数
FRIDAY金曜日を表す定数
SATURDAY土曜日を表す定数
【その他定数】
定数説明
YEAR年を表す定数
MONTH月を表す定数
DATE月の日を表す定数
DAY_OF_YEAR年の何日目かを表す定数
DAY_OF_MONTH月の日を表す定数(DATEと同じ)
DAY_OF_WEEK週の何日目かを表す定数
DAY_OF_WEEK_IN_MONTH現在の月の何回目の曜日かを表す定数
HOUR
MINUTE
SECOND
MILLISECONDミリ秒
WEEK_OF_YEAR現在の年の何週目かを表す定数
WEEK_OF_MONTH現在の月の何週目かを表す定数
AM_PM午前・午後を表す定数
AM午前
PM午後
HOUR_OF_DAY現在の日で時間を表す定数
ERA年代を表す定数(BC, AD)

主要メソッド

【java.util.Calendarクラスの主要メソッド】
戻値型メソッド説明
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の比較サンプル
//cal1>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日はありえないためエラーとなる
→エラーになる

日付カテゴリ

HOMEへ戻る TOPへ戻る