Calendarクラス
java.lang.Object
java.util.Calendar
Calendarクラスは中小クラスであり、年・月・日といった日付のそれそれの情報や、時・分・秒といった時刻のそれそれの情報を操作することができます。
Calendarクラスのコンストラクタはprotectedが指定されていため、コンストラクタを明示的に呼び出すことはできないです。
その代わりに以下のように静的メソッドであるgetInstanceメソッドを使って、現在のカレンダーを取得することができます。
Calendar now = Calendar.getInstance();
Calendarクラスの主なフィールド
年月日を表すフィールド
戻り値 | フィールド | 説明 |
static int | YEAR | 年の番号を示します。 |
static int | MONTH | 月の番号を示します。 |
static int | WEEK_OF_YEAR | 年に対しての週番号を示します。 |
static int | WEEK_OF_MONTH | 月に対しての週番号を示します。 |
static int | DATE | 日付のメンバ変数を示します。 |
static int | DAY_OF_YEAR | 年に対しての何日目かの番号を示します。 |
時刻を表すフィールド
戻り値 | フィールド | 説明 |
static int | HOUR | 時の番号を示します。 |
static int | MINUTE | 分の番号を示します。 |
static int | SECOND | 秒の番号を示します。 |
static int | MILLISECOND | ミリ秒の番号を示します。 |
月を表すフィールド
戻り値 | フィールド | 説明 |
static int | JANUARY | 1月を示す値です。 |
static int | FEBRUARY | 2月を示す値です。 |
static int | MARCH | 3月を示す値です。 |
static int | APRIL | 4月を示す値です。 |
static int | MAY | 5月を示す値です。 |
static int | JUNE | 6月を示す値です。 |
static int | JULY | 7月を示す値です。 |
static int | AUGUST | 8月を示す値です。 |
static int | SEPTEMBER | 9月を示す値です。 |
static int | OCTOBER | 10月を示す値です。 |
static int | NOVEMBER | 11月を示す値です。 |
static int | DECEMBER | 12月を示す値です。 |
曜日を表すフィールド
戻り値 | フィールド | 説明 |
static int | SUNDAY | 日曜日を示す値です。 |
static int | MONDAY | 月曜日を示す値です。 |
static int | TUSEDAY | 火曜日を示す値です。 |
static int | WEDNESDAY | 水曜日を示す値です。 |
static int | THURSDAY | 木曜日を示す値です。 |
static int | FRIDAY | 金曜日を示す値です。 |
static int | SATURDAY | 土曜日を示す値です。 |
Calendarクラスの主なメソッド
戻り値 | メソッド | 説明 |
boolean | before(Object when) | whenよりも現在の時刻が前ならば、真を返します。 |
boolean | after(Object when) | whenよりも現在の時刻が後ならば、真を返します。 |
boolean | equals(Object obj) | objと現在の時刻が同じならば、真を返します。 |
int | get(int field) | fieldに指定した位置の要素の値を返します。 |
static Calendar | getInstance() | マシンに設定された既定の場所とタイムゾーンのCalendarオブジェクトを返します。 |
Date | getTime() | 既定の場所とタイムゾーンに設定されたDateオブジェクトを返します。 |
void | set(int field, int value) | fieldに指定した位置の要素の値をvalueにします。 |
void | set(int year, int month, int date, int hourOfDay, int minute) | Calendarオブジェクトのそれそれの要素の値を引数で与えた値にします。 |
String | toString() | Calendarを文字列にして返します。 |
日付を扱う場合の注意点
(その1)月の扱い
メンバ変数MONTHで取れる月の値は、0から11となるため、そのまま使うと実際よりも1か月前の月となってしまいます。
使用する時はフィールドMONTHを使って取得した値に1を足します。(サンプルプログラム22行目)
(その2)曜日の扱い
曜日を考える際は、週内で何日目なのかを確認する必要があるため、DAY_OF_WEEKを使って週の何日目かを取得します。
ここで取得できる値は1から7です。以下の配列daysの内容を見ると、フィールドDAY_OF_WEEKから取得した値と、配列daysの添え字の番号がずれてしまいます。
使用する時はメンバ変数DAY_OF_WEEKから取得した値から1を引いて用います。(サンプルプログラム31行目)
配列daysの内容
要素 | 値 |
days[0] | 日曜日 |
days[1] | 月曜日 |
days[2] | 火曜日 |
days[3] | 水曜日 |
days[4] | 木曜日 |
days[5] | 金曜日 |
days[6] | 土曜日 |
サンプルプログラム
Sample.java
Java
import java.util.*;
class Sample{
public static void main(String args[]) {
int year;
int month;
int date;
int hour;
int minute;
int second;
int dayofweek;
//曜日の配列を生成します
String days[] = {"日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"};
//Calendarオブジェクトを取得します
Calendar now = Calendar.getInstance();
//日付を出力します
System.out.println( now.getTime());
//年月日の変数に代入します
year = now.get(now.YEAR);
month = now.get(now.MONTH) + 1;
date = now.get(now.DATE);
//時刻の変数に代入します
hour = now.get(now.HOUR);
minute = now.get(now.MINUTE);
second = now.get(now.SECOND);
//曜日の変数に代入します
dayofweek = now.get(now.DAY_OF_WEEK) - 1;
//書式を付けて日付を出力します
System.out.println(
year + "年" +
month + "月" +
date + "日" +
hour + "時" +
minute + "分" +
second + "秒" +
days[dayofweek]
);
}
}
コメント