Javaに関する様々な情報をご紹介します。

2Calendarクラス

Javaに関する様々な情報をご紹介します。

Calendarクラス

このページでは日付・時刻の表示・操作に使用するCalendarクラスについて解説します。詳細な日付・時刻の表示・操作を行いたいときに使用します。

ファクトリメソッド

Calendarクラスのコンストラクタはアクセスレベルがprotectedで宣言されており、他のクラスから使用することができません。そのため、Calendarオブジェクトを生成するときは、Calendarクラスで用意されているファクトリメソッドを使用します。

戻り型 メソッド 説明
static
Calendar
getInstance( ) デフォルトのロケール、タイムゾーンを持つCalendarオブジェクトを生成します。日時はロケールとタイムゾーンに基づいた現在日時が保持されています。
static
Calendar
getInstance
(Locale)
引数に指定されたロケールと、デフォルトのタイムゾーンを持つCalendarオブジェクトを生成します。日時はロケールとタイムゾーンに基づいた現在日時が保持されています。
static
Calendar
getInstance
(TimeZone)
引数に指定されたタイムゾーンと、デフォルトのロケールを持つCalendarオブジェクトを生成します。日時はロケールとタイムゾーンに基づいた現在日時が保持されています。
static
Calendar
getInstance
(TimeZone,
Locale)
引数に指定されたタイムゾーン、ロケールを持つCalendarオブジェクトを生成します。日時はロケールとタイムゾーンに基づいた現在日時が保持されています。

※ Locale定数の一覧はAPIドキュメントを参照してください。

例1

//デフォルトのロケール、タイムゾーンを持つCalendarオブジェクトcal1を生成します。
Calendar cal1 = Calendar.getInstance();

//ロケールがUSAである、Calendarオブジェクトcal2を生成します。
Calendar cal2 = Calendar.getInstance(Locale.US);

//getTimeZoneメソッドを使用し、タイムゾーンがロンドンである、Calendarオブジェクトcal3を生成します。
TimeZone tz1 = TimeZone.getTimeZone("Europe/London");
Calendar cal3 = Calendar.getInstance(tz1);

フィールド

Calendarクラスで用意されている主なフィールドについて解説します。フィールドには日付・時間の値が保持されています。setメソッド、getメソッドなどを使用し、フィールドを通し日付・時間の表示・操作を行います。

フィールド 説明
DATE 月の日を表します。
DAY_OF_WEEK 曜日を表します。
DAY_OF_WEEK
_IN_MONTH
月の何番目の曜日かを表します。
DAY_OF_YEAR 年の何番目の日かを表します。
FRIDAY DAY_OF_WEEKフィールドで表される、金曜日の値を保持します。
HOUR 時間を午前何時か、午後何時かで表します。
HOUR_OF_DAY 時間を24時間単位で表します。
MINUTE 分を表します。
MONDAY DAY_OF_WEEKフィールドで表される、月曜日の値を保持します。
MONTH 月を表します。月は0~11の値で表されます。そのため、実際の月は1加える必要があります。
SATDAY DAY_OF_WEEKフィールドで表される、土曜日の値を保持します。
SECOND 秒を表します。
SUNDAY DAY_OF_WEEKフィールドで表される、日曜日の値を保持します。
THURSDAY DAY_OF_WEEKフィールドで表される、木曜日の値を保持します。
TUESDAY DAY_OF_WEEKフィールドで表される、火曜日の値を保持します。
WEDNESDAY DAY_OF_WEEKフィールドで表される、水曜日の値を保持します。
WEEK_OF_MONTH 月の何番目の週かを表します。
WEEK_OF_YEAR 年の何番目の週かを表します。
YEAR 年を表します。

メソッド

Calendarクラスで用意されている主なメソッドについて解説します。

戻り型 メソッド 説明
int get(int) 引数に指定された日付・時間の値を返します。
int getActualMaximum(int) 引数に指定された日付の月の最大の日を返します。
int getActualMiniimum(int) 引数に指定された日付の月の最小の日を返します。
Date getTime( ) 現在の日時を返します。
void set(int, int) 第1引数にフィールド、第2引数に値を指定し、フィールドの値を設定します。
void set(int, int, int) YEAR, MONTH, DATEの順にフィールドの値を設定します。
void set(int, int, int, int, int) YEAR, MONTH, DATE, HOUR_OF_DAY, MINUTEの順にフィールドの値を設定します。
void set(int, int, int, int, int, int) YEAR, MONTH, DATE, HOUR_OF_DAY, MINUTE, SECONDの順にフィールドの値を設定します。
void setLenient(
boolean)
日付・時間の厳密な解釈を行うかを指定します。厳密な解釈を行う場合は1999年4月100日などの値に対して例外が発生します。
void setTime(Date) 引数に指定されたDateオブジェクトを設定します。
void setTimeZone(TimeZone) 引数に指定されたTimeZoneオブジェクトを設定します。

【例2】Calendarクラスを使用し、現在の年、月、日、曜日、時、分、秒を表示するプログラムを作成します。

import java.util.*;

class ExDate2 {
    public static void main(String[] args) {
        Calendar cal1 = Calendar.getInstance();  //(1)オブジェクトの生成

        int year = cal1.get(Calendar.YEAR);        //(2)現在の年を取得
        int month = cal1.get(Calendar.MONTH) + 1;  //(3)現在の月を取得
        int day = cal1.get(Calendar.DATE);         //(4)現在の日を取得
        int hour = cal1.get(Calendar.HOUR_OF_DAY); //(5)現在の時を取得
        int minute = cal1.get(Calendar.MINUTE);    //(6)現在の分を取得
        int second = cal1.get(Calendar.SECOND);    //(7)現在の秒を取得

        StringBuffer dow = new StringBuffer();
        switch (cal1.get(Calendar.DAY_OF_WEEK)) {  //(8)現在の曜日を取得
            case Calendar.SUNDAY: dow.append("日曜日"); break;
            case Calendar.MONDAY: dow.append("月曜日"); break;
            case Calendar.TUESDAY: dow.append("火曜日"); break;
            case Calendar.WEDNESDAY: dow.append("水曜日"); break;
            case Calendar.THURSDAY: dow.append("木曜日"); break;
            case Calendar.FRIDAY: dow.append("金曜日"); break;
            case Calendar.SATURDAY: dow.append("土曜日"); break;
        }

        //(9)現在の年、月、日、曜日、時、分、秒を表示
        System.out.println(year + "/" + month + "/" + day + " " + dow
            + " " + hour + ":" + minute + ":" + second);
    }
}

解説2

  1. (1)getInstanceメソッドを使用し、デフォルトのロケール、タイムゾーンを持つCalendarオブジェクトcal1を生成します。
  2. (2)getメソッドと、YEARフィールドにより、現在の年を取得します。
  3. (3)getメソッドと、MONTHフィールドにより、現在の月を取得します。MONTHフィールドの月は0~11の値をとるため、実際の月は1加えた値になります。
  4. (4)getメソッドと、DATEフィールドにより、現在の日を取得します。
  5. (5)getメソッドと、HOUR_OF_DAYフィールドにより、24時間単位で現在の時を取得します。
  6. (6)getメソッドと、MINUTEフィールドにより、現在の分を取得します。
  7. (7)getメソッドと、SECONDフィールドにより、現在の秒を取得します。
  8. (8)switch文を使用し、DAY_OF_WEEKフィールドで返される値と、各曜日のフィールドの値を比較し合致する曜日をStringBuffer変数dowに代入します。appendメソッドは引数に指定された文字列をStringBuffer変数に追記するメソッドです。
  9. (9)printlnメソッドを使用し、それぞれの変数に代入された現在の年、月、日、曜日、時、分、秒を表示します。

実行結果2

C:\source>javac ExDate2.java

C:\source>java ExDate2
2004/5/2 日曜日 13:28:14

C:\source>

2Calendarクラス