 |
 |
●日付・時刻−2.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オブジェクトを生成します。日時はロケールとタイムゾーンに基づいた現在日時が保持されています。
|
|
//デフォルトのロケール、タイムゾーンを持つ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). |
getInstanceメソッドを使用し、デフォルトのロケール、タイムゾーンを持つCalendarオブジェクトcal1を生成します。 |
(2). |
getメソッドと、YEARフィールドにより、現在の年を取得します。 |
(3). |
getメソッドと、MONTHフィールドにより、現在の月を取得します。MONTHフィールドの月は0〜11の値をとるため、実際の月は1加えた値になります。 |
(4). |
getメソッドと、DATEフィールドにより、現在の日を取得します。 |
(5). |
getメソッドと、HOUR_OF_DAYフィールドにより、24時間単位で現在の時を取得します。 |
(6). |
getメソッドと、MINUTEフィールドにより、現在の分を取得します。 |
(7). |
getメソッドと、SECONDフィールドにより、現在の秒を取得します。 |
(8). |
switch文を使用し、DAY_OF_WEEKフィールドで返される値と、各曜日のフィールドの値を比較し合致する曜日をStringBuffer変数dowに代入します。appendメソッドは引数に指定された文字列をStringBuffer変数に追記するメソッドです。 |
(9). |
printlnメソッドを使用し、それぞれの変数に代入された現在の年、月、日、曜日、時、分、秒を表示します。 |
C:\source>javac ExDate2.java
C:\source>java ExDate2
2004/5/2 日曜日 13:28:14
C:\source>
|
|
日付・時刻 |
|
2.Calendarクラス |
|
|
|
|
 |
|
 |
 |