JavaTM 2 Platform
Std. Ed. v1.3

java.util
クラス GregorianCalendar

java.lang.Object
  |
  +--java.util.Calendar
        |
        +--java.util.GregorianCalendar
すべての実装インタフェース:
Cloneable, Serializable

public class GregorianCalendar
extends Calendar

GregorianCalendar は、Calendar の具象サブクラスであり、世界のほとんどの地域で使用される標準的なカレンダを提供します。

標準 (グレゴリオ) カレンダには、BC (紀元前) と AD (紀元後) という区分があります。

この実装では、1 つの変わり目を処理します。この変わり目は、デフォルト値により、グレゴリオ暦が制定された日 (一部の国では 1582 年 10 月 15 日、その他の国ではそれ以後) に対応しています。調整日は、setGregorianChange() を呼び出すことによって呼び出し側で変更できます。

歴史的に、グレゴリオ暦を最初に採用した国々では、1582 年 10 月 4 日のあとに 1582 年 10 月 15 日が続きました。このカレンダはこれを正確にモデル化しています。グレゴリオ暦への切り換え日の前は、GregorianCalendar ではユリウス暦を実装しています。グレゴリオ暦とユリウス暦の唯一の違いはうるう年の規則です。ユリウス暦は 4 年ごとにうるう年を指定しますが、グレゴリオ暦では、400 で割り切れない世紀の初年をうるう年にしません。

GregorianCalendar は、「予期的」グレゴリオ暦およびユリウス暦を実装します。すなわち、日付の計算では、現在の規則を無限の過去あるいは未来に向けて適用します。このため、GregorianCalendar はすべての年について一貫した結果を生成するために使用できます。ただし、GregorianCalendar を使用して得られた日付は、歴史的に、現代と同様のユリウス暦が採用され AD 4 年 3 月 1 日以降の日付だけが正確です。この日付より前には、うるう年の規則は不規則に適用されており、BC 45 年以前にはユリウス暦は存在さえしていませんでした。

グレゴリオ暦の制定より前は、元日は 3 月 25 日でした。混乱を避けるために、このカレンダでは常に 1 月 1 日を使います。必要であれば、グレゴリオ暦より前の日付に対し、1 月 1 日から 3 月 24 日の間の日に調整することができます。

WEEK_OF_YEAR フィールドに対して計算される値の範囲は、1 から 53 です。年の第 1 週は、その年から少なくとも getMinimalDaysInFirstWeek() 日を含む getFirstDayOfWeek() で始まる最も早い 7 日間です。このように第 1 週は getMinimalDaysInFirstWeek()getFirstDayOfWeek() の値、および 1 月 1 日の曜日により変化します。1 年の第 1 週から翌年の第 1 週までの週は、必要に応じて 2 から 52 または 53 まで順に番号が付けられます。

たとえば、1998 年 1 月 1 日は木曜日でした。getFirstDayOfWeek()MONDAYgetMinimalDaysInFirstWeek() が 4 の場合 (これらは ISO 8601 および多数の国の標準)、1998 年の第 1 週は 1997年 12 月 29 日から、1998 年 1 月 4 日までです。ただし、getFirstDayOfWeek()SUNDAY の場合、1998 年の第 1 週は 1998 年 1 月 4 日から、1998 年 1 月 10 日までです。1998 年の最初の 3 日間は 1997 年の第 53 週に入ります。

WEEK_OF_MONTH フィールドに対して計算される値の範囲は、0 から 4 または 1 から 5 です。月の第 1 週 (WEEK_OF_MONTH = 1 の日) は、その月で少なくとも getMinimalDaysInFirstWeek() 日間連続する最も早い週になり、getFirstDayOfWeek() の前日までです。年の第 1 週とは異なり、月の第 1 週は 7 日より短いことがあり、getFirstDayOfWeek() で始まる必要はなく、前の月の日は含まれません。第 1 週より前の月の日には、WEEK_OF_MONTH の値は 0 になります。

たとえば、getFirstDayOfWeek()SUNDAYgetMinimalDaysInFirstWeek() が 4 の場合、1998 年 1 月の第 1 週は 1 月 4 日日曜日から 1 月 10 日土曜日になります。これらの日の WEEK_OF_MONTH の値は 1 です。1 月 1 日木曜日から 1 月 3 日土曜日の WEEK_OF_MONTH の値は 0 です。getMinimalDaysInFirstWeek() の値が 3 に変更されると、1 月 1 日から 1 月 3 日の WEEK_OF_MONTH の値は 1 になります。

例:

 // get the supported ids for GMT-08:00 (Pacific Standard Time)
 String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
 // if no ids were returned, something is wrong. get out.
 if (ids.length == 0)
     System.exit(0);

  // begin output
 System.out.println("Current Time");

 // create a Pacific Standard Time time zone
 SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);

 // set up rules for daylight savings time
 pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
 pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);

 // create a GregorianCalendar with the Pacific Daylight time zone
 // and the current date and time
 Calendar calendar = new GregorianCalendar(pdt);
 Date trialTime = new Date();
 calendar.setTime(trialTime);

 // print out a bunch of interesting things
 System.out.println("ERA: " + calendar.get(Calendar.ERA));
 System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
 System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
 System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
 System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
 System.out.println("DATE: " + calendar.get(Calendar.DATE));
 System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
 System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
 System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
 System.out.println("DAY_OF_WEEK_IN_MONTH: "
                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
 System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
 System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
 System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
 System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
 System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
 System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
 System.out.println("ZONE_OFFSET: "
                    + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
 System.out.println("DST_OFFSET: "
                    + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));

 System.out.println("Current Time, with hour reset to 3");
 calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
 calendar.set(Calendar.HOUR, 3);
 System.out.println("ERA: " + calendar.get(Calendar.ERA));
 System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
 System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
 System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
 System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
 System.out.println("DATE: " + calendar.get(Calendar.DATE));
 System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
 System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
 System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
 System.out.println("DAY_OF_WEEK_IN_MONTH: "
                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
 System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
 System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
 System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
 System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
 System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
 System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
 System.out.println("ZONE_OFFSET: "
        + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
 System.out.println("DST_OFFSET: "
        + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
 

導入されたバージョン:
JDK1.1
関連項目:
Calendar, TimeZone, 直列化された形式

フィールドの概要
static int AD
          キリスト紀元 (西暦) を示す ERA フィールドの値であり、CE とも呼ばれます。
static int BC
          キリスト紀元 (BC) より前の期間を示す ERA フィールドの値であり、BCE とも呼ばれます。
 
クラス java.util.Calendar から継承したフィールド
AM, AM_PM, APRIL, areFieldsSet, AUGUST, DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, DECEMBER, DST_OFFSET, ERA, FEBRUARY, FIELD_COUNT, fields, FRIDAY, HOUR, HOUR_OF_DAY, isSet, isTimeSet, JANUARY, JULY, JUNE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET
 
コンストラクタの概要
GregorianCalendar()
          デフォルトロケールでデフォルトタイムゾーンの現在時刻に基づいてデフォルトの GregorianCalendar を構築します。
GregorianCalendar(int year, int month, int date)
          デフォルトロケールでデフォルトタイムゾーンの指定された日付に基づいて GregorianCalendar を構築します。
GregorianCalendar(int year, int month, int date, int hour, int minute)
          デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築します。
GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
          デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築します。
GregorianCalendar(Locale aLocale)
          指定されたロケールでデフォルトタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
GregorianCalendar(TimeZone zone)
          デフォルトロケールで指定されたタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
GregorianCalendar(TimeZone zone, Locale aLocale)
          指定されたロケールで指定されたタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
 
メソッドの概要
 void add(int field, int amount)
          Calendar の Date 計算機能をオーバーライドします。
protected  void computeFields()
          Calendar をオーバーライドします。
protected  void computeTime()
          Calendar をオーバーライドします。
 boolean equals(Object obj)
          この GregorianCalendar とオブジェクト参照を比較します。
 int getActualMaximum(int field)
          現在の日付に対する、このフィールドが持ち得る最大値を返します。
 int getActualMinimum(int field)
          現在の日付に対する、このフィールドが持ち得る最小値を返します。
 int getGreatestMinimum(int field)
          指定されたフィールドが変化する場合、その最小値を返します。
 Date getGregorianChange()
          グレゴリオ暦の切り換え日を取得します。
 int getLeastMaximum(int field)
          指定されたフィールドが変化する場合、その最大値を返します。
 int getMaximum(int field)
          指定されたフィールドの最大値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、31) を返します。
 int getMinimum(int field)
          指定されたフィールドの最小値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、1) を返します。
 int hashCode()
          ハッシュコードをオーバーライドします。
 boolean isLeapYear(int year)
          指定された年が、うるう年かどうかを判定します。
 void roll(int field, boolean up)
          Calendar の時間フィールドのローリング機能をオーバーライドします。
 void roll(int field, int amount)
          指定された量だけフィールドを動かします。
 void setGregorianChange(Date date)
          GregorianCalendar の切り換え日を設定します。
 
クラス java.util.Calendar から継承したメソッド
after, before, clear, clear, clone, complete, get, getAvailableLocales, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, getTimeZone, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, setTimeZone, toString
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

BC

public static final int BC
キリスト紀元 (BC) より前の期間を示す ERA フィールドの値であり、BCE とも呼ばれます。BC から AD へは次のように移行します。..., 2 BC, 1 BC, 1 AD, 2 AD,...
関連項目:
Calendar.ERA

AD

public static final int AD
キリスト紀元 (西暦) を示す ERA フィールドの値であり、CE とも呼ばれます。BC から AD へは次のように移行します。..., 2 BC, 1 BC, 1 AD, 2 AD,...
関連項目:
Calendar.ERA
コンストラクタの詳細

GregorianCalendar

public GregorianCalendar()
デフォルトロケールでデフォルトタイムゾーンの現在時刻に基づいてデフォルトの GregorianCalendar を構築します。

GregorianCalendar

public GregorianCalendar(TimeZone zone)
デフォルトロケールで指定されたタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
パラメータ:
zone - 指定されたタイムゾーン

GregorianCalendar

public GregorianCalendar(Locale aLocale)
指定されたロケールでデフォルトタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
パラメータ:
aLocale - 指定されたロケール

GregorianCalendar

public GregorianCalendar(TimeZone zone,
                         Locale aLocale)
指定されたロケールで指定されたタイムゾーンの現在時刻に基づいて GregorianCalendar を構築します。
パラメータ:
zone - 指定されたタイムゾーン
aLocale - 指定されたロケール

GregorianCalendar

public GregorianCalendar(int year,
                         int month,
                         int date)
デフォルトロケールでデフォルトタイムゾーンの指定された日付に基づいて GregorianCalendar を構築します。
パラメータ:
year - カレンダの YEAR 時間フィールドに設定する値
month - カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)
date - カレンダの DATE 時間フィールドに設定する値

GregorianCalendar

public GregorianCalendar(int year,
                         int month,
                         int date,
                         int hour,
                         int minute)
デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築します。
パラメータ:
year - カレンダの YEAR 時間フィールドに設定する値
month - カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)
date - カレンダの DATE 時間フィールドに設定する値
hour - カレンダの HOUR_OF_DAY 時間フィールドに設定する値
minute - カレンダの MINUTE 時間フィールドに設定する値

GregorianCalendar

public GregorianCalendar(int year,
                         int month,
                         int date,
                         int hour,
                         int minute,
                         int second)
デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築します。
パラメータ:
year - カレンダの YEAR 時間フィールドに設定する値
month - カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)
date - カレンダの DATE 時間フィールドに設定する値
hour - カレンダの HOUR_OF_DAY 時間フィールドに設定する値
minute - カレンダの MINUTE 時間フィールドに設定する値
second - カレンダの SECOND 時間フィールドに設定する値
メソッドの詳細

setGregorianChange

public void setGregorianChange(Date date)
GregorianCalendar の切り換え日を設定します。これは、ユリウスの日付からグレゴリオの日付への切り換えが発生する時点です。デフォルトは 1582 年 10 月 15 日です。この日より前の日付はユリウス暦になります。

純粋なユリウス暦を取得するには、切り換え日を Date(Long.MAX_VALUE) に設定します。純粋なグレゴリオ歴を取得するには、切り換え日を Date(Long.MIN_VALUE) に設定します。

パラメータ:
date - グレゴリオ暦への変更日付

getGregorianChange

public final Date getGregorianChange()
グレゴリオ暦の切り換え日を取得します。これは、ユリウス暦からグレゴリオ暦への切り換えが発生する時点です。デフォルトは 1582 年 10 月 15 日です。これ以前の日付はユリウス暦になります。
戻り値:
このカレンダのグレゴリオ暦への切り換え日

isLeapYear

public boolean isLeapYear(int year)
指定された年が、うるう年かどうかを判定します。指定された年がうるう年の場合は、true が返されます。
パラメータ:
year - 指定する年
戻り値:
指定された年がうるう年の場合は true、そうでない場合は false

equals

public boolean equals(Object obj)
この GregorianCalendar とオブジェクト参照を比較します。
オーバーライド:
クラス Calendar 内の equals
パラメータ:
obj - 比較対象のオブジェクト参照
戻り値:
このオブジェクトが obj に等しい場合は true、そうでない場合は false

hashCode

public int hashCode()
ハッシュコードをオーバーライドします。GregorianCalendar オブジェクトのハッシュコードを生成します。
オーバーライド:
クラス Calendar 内の hashCode
クラス java.util.Calendar からコピーされたタグ:
戻り値:
このオブジェクトのハッシュコード値

add

public void add(int field,
                int amount)
Calendar の Date 計算機能をオーバーライドします。カレンダの規則に基づいて、指定された (符号付きの) 時間量を、指定された時間フィールドに加えます。
オーバーライド:
クラス Calendar 内の add
パラメータ:
field - 時間フィールド
amount - フィールドに追加される日付または時刻の量
例外:
IllegalArgumentException - 認識できないフィールドが指定された場合

roll

public void roll(int field,
                 boolean up)
Calendar の時間フィールドのローリング機能をオーバーライドします。指定された時間フィールドの単一単位の時間を (上または下へ) 動かします。
オーバーライド:
クラス Calendar 内の roll
パラメータ:
field - 時間フィールド
up - このフィールド値を上へ動かすか、下へ動かすかを指定する
例外:
IllegalArgumentException - 認識できないフィールド値が指定された場合

roll

public void roll(int field,
                 int amount)
指定された量だけフィールドを動かします。
オーバーライド:
クラス Calendar 内の roll
導入されたバージョン:
1.2

getMinimum

public int getMinimum(int field)
指定されたフィールドの最小値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、1) を返します。パラメータと戻り値の説明は、Calendar.getMinimum を参照してください。
オーバーライド:
クラス Calendar 内の getMinimum
クラス java.util.Calendar からコピーされたタグ:
パラメータ:
field - 指定された時間フィールド
戻り値:
指定された時間フィールドの最小値

getMaximum

public int getMaximum(int field)
指定されたフィールドの最大値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、31) を返します。パラメータと戻り値の説明は、Calendar.getMaximum を参照してください。
オーバーライド:
クラス Calendar 内の getMaximum
クラス java.util.Calendar からコピーされたタグ:
パラメータ:
field - 指定された時間フィールド
戻り値:
指定された時間フィールドの最大値

getGreatestMinimum

public int getGreatestMinimum(int field)
指定されたフィールドが変化する場合、その最小値を返します。それらが同じ場合は、getMinimum() と同じです。グレゴリオ暦では、それらは同じです。パラメータと戻り値の説明は、Calendar.getGreatestMinimum を参照してください。
オーバーライド:
クラス Calendar 内の getGreatestMinimum
クラス java.util.Calendar からコピーされたタグ:
パラメータ:
field - 指定された時間フィールド
戻り値:
指定された時間フィールドの最大の最小値

getLeastMaximum

public int getLeastMaximum(int field)
指定されたフィールドが変化する場合、その最大値を返します。それらが同じ場合は、getMaximum() と同じです。グレゴリオ暦の DAY_OF_MONTH では、28 です。パラメータと戻り値の説明は、Calendar.getLeastMaximum を参照してください。
オーバーライド:
クラス Calendar 内の getLeastMaximum
クラス java.util.Calendar からコピーされたタグ:
パラメータ:
field - 指定された時間フィールド
戻り値:
指定された時間フィールドの最小の最大値

getActualMinimum

public int getActualMinimum(int field)
現在の日付に対する、このフィールドが持ち得る最小値を返します。グレゴリオ暦の場合は、getMinimum() および getGreatestMinimum() と同じです。
オーバーライド:
クラス Calendar 内の getActualMinimum
導入されたバージョン:
1.2

getActualMaximum

public int getActualMaximum(int field)
現在の日付に対する、このフィールドが持ち得る最大値を返します。たとえば、日付が「Feb 3, 1997」の場合、DAY_OF_MONTH フィールドの実際の最大値は 28 になります。「Feb 3, 1996」の場合は 29 になります。ヘブライ暦でも同様で、MONTH の最大値が 12 になる年と 13 になる年があります。
オーバーライド:
クラス Calendar 内の getActualMaximum
導入されたバージョン:
1.2

computeFields

protected void computeFields()
Calendar をオーバーライドします。ミリ秒の UTC を時間フィールドの値に変換します。時間は最初に再計算されません。時間、フィールドの順で再計算するには、complete メソッドを呼び出します。
オーバーライド:
クラス Calendar 内の computeFields
関連項目:
Calendar.complete()

computeTime

protected void computeTime()
Calendar をオーバーライドします。時間フィールドの値をミリ秒の UTC に変換します。
オーバーライド:
クラス Calendar 内の computeTime
例外:
IllegalArgumentException - 無効なフィールドがある場合

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.