Java プラットフォーム 1.2

java.util
クラス GregorianCalendar

java.lang.Object
  |
  +--java.util.Calendar
        |
        +--java.util.GregorianCalendar

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 日の間の日に調整することができます。

例:

 // 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
 

関連項目:
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)
          指定されたフィールドが変化する場合、その最大値を返します。
 int getMinimum(int field)
          指定されたフィールドの最大値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、31) を返します。
 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 - デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築する
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 とオブジェクト参照を比較します。
パラメータ:
obj - 比較対象のオブジェクト参照
戻り値:
このオブジェクトが obj に等しい場合は true、そうでない場合は false
オーバーライド:
クラス Calendar 内の equals

hashCode

public int hashCode()
ハッシュコードをオーバーライドします。GregorianCalendar オブジェクトのハッシュコードを生成します。
オーバーライド:
クラス Calendar 内の hashCode

add

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

roll

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

roll

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

getMinimum

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

getMaximum

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

getGreatestMinimum

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

getLeastMaximum

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

getActualMinimum

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

getActualMaximum

public int getActualMaximum(int field)
指定された現在の日付で、このフィールドが持つことができる最大値を返します。たとえば、「1997 年 2 月 3 日」および DAY_OF_MONTH フィールドの場合、実際の最大値は 28 で、「1996 年 2 月 3 日」の場合は 29 です。ヘブライ暦では、MONTH の実際の最大値が 12 の場合と 13 の場合があります。
オーバーライド:
クラス Calendar 内の getActualMaximum

computeFields

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

computeTime

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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.