モジュール java.base
パッケージ java.util

クラスGregorianCalendar

  • すべての実装されたインタフェース:
    Serializable, Cloneable, Comparable<Calendar>


    public class GregorianCalendar
    extends Calendar
    GregorianCalendarは、Calendarの具象サブクラスであり、世界のほとんどの地域で使用される標準的な暦体系を提供します。

    GregorianCalendarは、グレゴリオ暦とユリウス暦をサポートするハイブリッド・カレンダで、単一の変わり目を処理します。この変わり目は、デフォルトでは、グレゴリオ暦が制定された日(一部の国では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です。 暦年の最初の週は、その年から少なくともgetMinimalDaysInFirstWeek()日を含むgetFirstDayOfWeek()で始まるもっとも早い7日間です。 したがって、最初の週は、getMinimalDaysInFirstWeek()の値、 getFirstDayOfWeek()の値、および1月1日の曜日により変化します。 ある年の第1週から翌年の第1週までの週(その週は含まない)は、必要に応じて2から52または53まで順に番号が付けられます(ユリウス暦からグレゴリオ暦へ移行に含まれる年を除く)。

    GregorianCalendarを構築するとき、getFirstDayOfWeek()および getMinimalDaysInFirstWeek()の値は、ロケールに依存したリソースを使用して初期化されます。 getFirstDayOfWeek()MONDAY getMinimalDaysInFirstWeek()が4の場合、週の決定はISO 8601に準拠し、これらの値は、標準の設定が優先されるロケールで使用されます。 これらの値は、setFirstDayOfWeek()およびsetMinimalDaysInFirstWeek()を呼び出すことによって明示的に設定できます。

    暦週の基準年は、WEEK_OF_YEARのサイクルと同期がとられます。 最初の週と最後の週の間にあるすべての週(両端の週を含む)の暦週の基準年は、同じ値になります。 したがって、暦週の基準年が同じでも、最初の日と最後の日では暦年の値が異なる場合があります。

    たとえば、1998年1月1日は木曜日です。 getFirstDayOfWeek()MONDAY getMinimalDaysInFirstWeek()が4 (ISO 8601規格に準拠した設定)の場合、1998年の第1週は1997年12月29日に始まり1998年1月4日で終わります。 暦年が1997年の最後の3日については、暦週の基準年が1998になります。 ただし、getFirstDayOfWeek()SUNDAYの場合、1998年の第1週は1998年1月4日に始まり1998年1月10日に終わります。1998年の最初の3日間は1997年の第53週に入り、それらの日の暦週の基準年は1997です。

    月の何週目かを表す週(Week Of Month)

    WEEK_OF_MONTHフィールドに対して計算される値の範囲は、0から6です。 月の第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になります。

    フィールドのデフォルト値

    clearメソッドは、カレンダ・フィールドを未定義に設定します。 フィールドの値が未定義の場合、GregorianCalendarは、各カレンダ・フィールドに対して次のデフォルト値を使用します。

    GregorianCalendar のフィールドのデフォルト値
    フィールド デフォルト値
    ERA AD
    YEAR 1970
    MONTH JANUARY
    DAY_OF_MONTH 1
    DAY_OF_WEEK the first day of week
    WEEK_OF_MONTH 0
    DAY_OF_WEEK_IN_MONTH 1
    AM_PM AM
    HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND 0

    前述のリストに含まれないフィールドについては、デフォルト値は適用されません。

    例:

     // 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 Saving 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
     
    導入されたバージョン:
    1.1
    関連項目:
    TimeZone, 直列化された形式
    • フィールドの詳細

      • 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​()
        デフォルトのFORMATロケールでデフォルト・タイム・ゾーンの現在の時間を使用してデフォルトのGregorianCalendarを構築します。
      • GregorianCalendar

        public GregorianCalendar​(TimeZone zone)
        デフォルトのFORMATロケールで指定されたタイムゾーンの現在の時間に基づいて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 dayOfMonth)
        デフォルト・ロケールでデフォルト・タイム・ゾーンの指定された日付に基づいてGregorianCalendarを構築します。
        パラメータ:
        year - カレンダ内のYEARカレンダ・フィールドの設定に使用する値。
        month - カレンダ内のMONTHカレンダ・フィールドの設定に使用する値。 Month値は0から始まる(1月は0になる)。
        dayOfMonth - カレンダ内のDAY_OF_MONTHカレンダ・フィールドの設定に使用する値。
      • GregorianCalendar

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

        public GregorianCalendar​(int year,
                                 int month,
                                 int dayOfMonth,
                                 int hourOfDay,
                                 int minute,
                                 int second)
        デフォルト・ロケールでデフォルト・タイム・ゾーンの指定された日付と時刻に基づいてGregorianCalendarを構築します。
        パラメータ:
        year - カレンダ内のYEARカレンダ・フィールドの設定に使用する値。
        month - カレンダ内のMONTHカレンダ・フィールドの設定に使用する値。 Month値は0から始まる(1月は0になる)。
        dayOfMonth - カレンダ内のDAY_OF_MONTHカレンダ・フィールドの設定に使用する値。
        hourOfDay - カレンダ内の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日(グレゴリオ暦)です。 これ以前の日付はユリウス暦になります。
        戻り値:
        このGregorianCalendarオブジェクトのグレゴリオ暦への切換え日。
      • isLeapYear

        public boolean isLeapYear​(int year)
        指定された年が、うるう年かどうかを判定します。 指定された年がうるう年の場合は、trueが返されます。 BC年の数値を指定する場合は、1 - year numberを指定する必要があります。 たとえば、BC 4年は -3と指定します。
        パラメータ:
        year - 指定する年。
        戻り値:
        指定された年がうるう年の場合はtrue、そうでない場合はfalse
      • equals

        public boolean equals​(Object obj)
        このGregorianCalendarを指定されたObjectと比較します。 引数が、このオブジェクトと同じCalendarパラメータおよびグレゴリオ暦切替え日の同じ時刻値(元期からのミリ秒単位のオフセット)を表すGregorianCalendarオブジェクトである場合にのみ、結果はtrueになります。
        オーバーライド:
        equals、クラス: Calendar
        パラメータ:
        obj - 比較対象のオブジェクト。
        戻り値:
        このオブジェクトがobjに等しい場合はtrue。それ以外の場合はfalse
        関連項目:
        Calendar.compareTo(Calendar)
      • add

        public void add​(int field,
                        int amount)
        カレンダのルールに基づいて、指定された(符号付きの)時間量を、指定されたカレンダ・フィールドに加えます。

        Addルール1 呼出しがfieldで発生したモジュロ・オーバーフローamountになる前に、呼出しでfieldの値を引いたあとのfieldの値です。 オーバーフローは、フィールドの値が範囲を超え、その結果、次の大きいフィールドが増分または減分されて、フィールドの値がその範囲に入るよう調整された場合に発生します。

        Addルール2 小さいフィールドが不変式であると予想される場合に、fieldが変更されてから最小値または最大値が変更されたために、その前の値と等しくならないと、フィールドの値はその予想される値にできるだけ近くなるように調整されます。 小さいフィールドは、小さい時間の単位を表します。 HOURDAY_OF_MONTHよりも小さいフィールドです。 不変式ではないと予想される小さいフィールドは、調整されません。 暦体系では、不変式であると予想されるフィールドが判断されます。

        定義:
        add、クラス: Calendar
        パラメータ:
        field - カレンダ・フィールド。
        amount - フィールドに追加される日付または時間の量。
        例外:
        IllegalArgumentException - fieldZONE_OFFSETDST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。
        関連項目:
        Calendar.roll(int,int), Calendar.set(int,int)
      • roll

        public void roll​(int field,
                         boolean up)
        大きいフィールドを変更せずに指定された時間フィールドの1つの単位の時間を上または下に加算または減算します。

        : 1999年12月31日に当初設定されたGregorianCalendarを考えます。 roll(Calendar.MONTH, true)を呼び出すと、カレンダが1999年1月31日に設定されます。 YEARフィールドはMONTHよりも大きいフィールドなので変更されません。

        定義:
        roll、クラス: Calendar
        パラメータ:
        up - 指定されたカレンダ・フィールドの値を上へ動かすのか、下へ動かすのかを指定する。 上へ動かす場合はtrue、そうでない場合はfalseを使用する。
        field - 時間フィールド。
        例外:
        IllegalArgumentException - fieldZONE_OFFSETDST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。
        関連項目:
        add(int,int), Calendar.set(int,int)
      • roll

        public void roll​(int field,
                         int amount)
        大きいフィールドを変更せずに、符号付きの量を指定されたカレンダ・フィールドに加えます。 負のローリング量は、大きいフィールドを変更せずにフィールドから減算することを意味します。 指定された量が0の場合、このメソッドは何も実行しません。

        このメソッドは、量を追加する前にCalendar.complete()を呼び出して、すべてのカレンダ・フィールドを正規化します。 厳密モードで範囲外の値を保持するカレンダ・フィールドが存在する場合、IllegalArgumentExceptionがスローされます。

        : 1999年8月31日に当初設定されたGregorianCalendarを考えます。 roll(Calendar.MONTH, 8)を呼び出すと、カレンダが1999年4月30日に設定されます。 GregorianCalendarを使用すると、DAY_OF_MONTHフィールドは4月においては31日になりません。 DAY_OF_MONTHはもっとも近い有効値である30に設定されます。 YEARフィールドではMONTHフィールドより大きいので、1999の値を維持します。

        : 最初に1999年6月6日日曜日に設定されたGregorianCalendarについて考えます。 roll(Calendar.WEEK_OF_MONTH, -1)を呼び出すと、カレンダが1999年6月1日火曜日に設定され、add(Calendar.WEEK_OF_MONTH, -1)を呼び出すと、カレンダが1999年5月30日日曜日に設定されます。 これは、ロール・ルールで追加の制限が加えられるためです。WEEK_OF_MONTHがロールされるときにMONTHを変更すべきではありません。 Addルール1とともに使用すると、結果の日付は6月1日火曜日から6月5日土曜日までになる必要があります。 Addルール2に従って、WEEK_OF_MONTHを変更するときに不変式DAY_OF_WEEKが、日曜日にもっとも近い可能値である火曜日に設定されます(日曜日が週の最初の曜日の場合)。

        オーバーライド:
        roll、クラス: Calendar
        パラメータ:
        field - カレンダ・フィールド。
        amount - fieldに追加する指定された量。
        例外:
        IllegalArgumentException - fieldZONE_OFFSETDST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。
        導入されたバージョン:
        1.2
        関連項目:
        roll(int,boolean), add(int,int), Calendar.set(int,int)
      • getActualMinimum

        public int getActualMinimum​(int field)
        このカレンダ・フィールドが持つことのできる最小値を返します。このとき、指定された時間値と、getFirstDayOfWeekgetMinimalDaysInFirstWeekgetGregorianChange、およびgetTimeZoneの各メソッドの現在値が考慮されます。

        たとえば、グレゴリオ暦の変更日が1970年1月10日で、このGregorianCalendarが1970年1月20日だとすると、DAY_OF_MONTHフィールドの実際の最小値は10になります。これは、1970年1月10日の前日が1996年12月27日(ユリウス暦で)になるためです。 したがって、1969年12月28日から1970年1月9日までは存在しません。

        オーバーライド:
        getActualMinimum、クラス: Calendar
        パラメータ:
        field - カレンダ・フィールド
        戻り値:
        このGregorianCalendarの時間値に対する、指定されたカレンダ・フィールドの最小値
        導入されたバージョン:
        1.2
        関連項目:
        getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMaximum(int)
      • getActualMaximum

        public int getActualMaximum​(int field)
        このカレンダ・フィールドが持つことのできる最大値を返します。このとき、指定された時間値と、getFirstDayOfWeekgetMinimalDaysInFirstWeekgetGregorianChange、およびgetTimeZoneの各メソッドの現在値が考慮されます。 たとえば、このインスタンスの日付が2004年2月1日だとすると、DAY_OF_MONTHフィールドの実際の最大値は29になります。これは、2004年がうるう年のため、このインスタンスの日付が2005年2月1日であれば、この値は28になります。

        このメソッドは、暦週の基準年でなく、YEAR (暦年)の値に基づいてWEEK_OF_YEARの最大値を計算します。 このGregorianCalendarでの暦週の基準年において WEEK_OF_YEARの最大値を取得するには、getWeeksInWeekYear()を呼び出します。

        オーバーライド:
        getActualMaximum、クラス: Calendar
        パラメータ:
        field - カレンダ・フィールド
        戻り値:
        このGregorianCalendarの時間値に対する、指定されたフィールドの最大値
        導入されたバージョン:
        1.2
        関連項目:
        getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int)
      • clone

        public Object clone​()
        クラスからコピーされた説明: Calendar
        このオブジェクトのコピーを作成して、返します。
        オーバーライド:
        clone、クラス: Calendar
        戻り値:
        このオブジェクトのコピー。
        関連項目:
        Cloneable
      • getTimeZone

        public TimeZone getTimeZone​()
        クラスからコピーされた説明: Calendar
        タイムゾーンを取得します。
        オーバーライド:
        getTimeZone、クラス: Calendar
        戻り値:
        カレンダに関連したタイムゾーン・オブジェクト。
      • setTimeZone

        public void setTimeZone​(TimeZone zone)
        クラスからコピーされた説明: Calendar
        指定されたタイムゾーン値を使用してタイムゾーンを設定します。
        オーバーライド:
        setTimeZone、クラス: Calendar
        パラメータ:
        zone - 指定されたタイムゾーン。
      • getWeekYear

        public int getWeekYear​()
        このGregorianCalendarで表される暦週の基準年を返します。 特定の暦週の基準年において、第1週から最大の週番号までの間にある各週の各日付では、暦週の基準年の値が同じになり、この値はYEAR (暦年)の値よりも1年前またはあとになることがあります。

        このメソッドは、暦週の基準年を計算する前にCalendar.complete()を呼び出します。

        オーバーライド:
        getWeekYear、クラス: Calendar
        戻り値:
        このGregorianCalendarで表される暦週の基準年。 ERA値がBCの場合、年は0または負の値で表現され、たとえばBC 1は0、BC 2は -1、BC 3は -2などのようになります。
        例外:
        IllegalArgumentException - いずれかのカレンダ・フィールドが厳密モードで無効な場合。
        導入されたバージョン:
        1.7
        関連項目:
        isWeekDateSupported(), getWeeksInWeekYear(), Calendar.getFirstDayOfWeek(), Calendar.getMinimalDaysInFirstWeek()
      • setWeekDate

        public void setWeekDate​(int weekYear,
                                int weekOfYear,
                                int dayOfWeek)
        このGregorianCalendarを日付指示子 - weekYearweekOfYear、およびdayOfWeekで指定された日付に設定します。weekOfYearWEEK_OF_YEARの番号付けに従います。 dayOfWeek値は、DAY_OF_WEEKのいずれかの値(SUNDAYからSATURDAYまで)である必要があります。

        数値による曜日の表現はISO 8601規格と異なっていること、およびweekOfYearの番号付けは getFirstDayOfWeek()MONDAY getMinimalDaysInFirstWeek()が4の場合にこの規格に準拠することに注意してください。

        setメソッドと異なり、すべてのカレンダ・フィールドおよび時間値のインスタントは返された時点で計算されます。

        weekOfYearweekYear内の有効な週番号の範囲外である場合は、weekYearおよびweekOfYear値が非厳密モードで調整されるか、IllegalArgumentExceptionが厳密モードでスローされます。

        オーバーライド:
        setWeekDate、クラス: Calendar
        パラメータ:
        weekYear - 暦週の基準年
        weekOfYear - weekYearに基づく週番号
        dayOfWeek - 曜日の値。DAY_OF_WEEKフィールドの定数(SUNDAY、...、SATURDAY)の1つ。
        例外:
        IllegalArgumentException - 厳密モードで、指定されたいずれかの日付指定子が無効であるか、いずれかのカレンダ・フィールドが、指定された日付指定子と矛盾している場合
        導入されたバージョン:
        1.7
        関連項目:
        isWeekDateSupported(), Calendar.getFirstDayOfWeek(), Calendar.getMinimalDaysInFirstWeek()
      • computeFields

        protected void computeFields​()
        時間値(元期からのミリ秒単位のオフセット)をカレンダ・フィールド値に変換します。 時間は最初に再計算されません。時間、フィールドの順に再計算するには、completeメソッドを呼び出します。
        定義:
        computeFields、クラス: Calendar
        関連項目:
        Calendar.complete()
      • toZonedDateTime

        public ZonedDateTime toZonedDateTime​()
        このオブジェクトを、時系列上でこのGregorianCalendarと同じ時点を表すZonedDateTimeに変換します。

        このオブジェクトはユリウス/グレゴリオ暦の切換え日をサポートしていますが、ZonedDateTimeはサポートしていないため、結果となる年、月、および日が異なる値になる可能性があります。 結果は、修正ユリウス日の同じ値でもある、ISO暦体系での正しい日付を表します。

        戻り値:
        時系列上でこのグレゴリオ暦と同じ時点を表すゾーン付き日付/時間
        導入されたバージョン:
        1.8
      • from

        public static GregorianCalendar from​(ZonedDateTime zdt)
        ZonedDateTimeオブジェクトからデフォルトのロケールを使ってGregorianCalendarのインスタンスを取得します。

        ZonedDateTimeはユリウス/グレゴリオ暦の切換え日をサポートしておらず、ISO暦体系を使用するため、返されるGregorianCalendarは純粋なグレゴリオ暦であり、週定義にはISO 8601標準が使われています。その標準では、FirstDayOfWeekMONDAYであり、MinimalDaysInFirstWeekの値は4です。

        ZoneDateTimeは、GregorianCalendarに比べ、時系列上の将来および過去のより詳細な時点を格納できます。 このシナリオでは、このメソッドはIllegalArgumentException例外をスローします。

        パラメータ:
        zdt - 変換対象のゾーン付き日付/時間オブジェクト
        戻り値:
        時系列上で指定されたゾーン付き日付/時間と同じ時点を表すグレゴリオ暦
        例外:
        NullPointerException - zdtがnullである場合
        IllegalArgumentException - そのゾーン付き日付/時間がGregorianCalendarとして表すには大きすぎる場合
        導入されたバージョン:
        1.8