クラスGregorianCalendar
- すべての実装されたインタフェース:
Serializable,Cloneable,Comparable<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()がSUNDAYでgetMinimalDaysInFirstWeek()が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は、各カレンダ・フィールドに対して次のデフォルト値を使用します。
| フィールド | デフォルト値 |
|---|---|
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
- 関連項目:
-
ネストされたクラスのサマリー
クラスjava.util.Calendarで宣言されたネストされたクラス/インタフェース
Calendar.Builder -
フィールドのサマリー
フィールド修飾子と型フィールド説明static final intキリスト紀元(西暦)を示すERAフィールドの値であり、CEとも呼ばれます。static final intキリスト紀元より前の期間(BC)を示すERAフィールドの値であり、BCEとも呼ばれます。クラスjava.util.Calendarで宣言されたフィールド
ALL_STYLES, 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, LONG, LONG_FORMAT, LONG_STANDALONE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NARROW_FORMAT, NARROW_STANDALONE, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SHORT, SHORT_FORMAT, SHORT_STANDALONE, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET -
コンストラクタのサマリー
コンストラクタコンストラクタ説明デフォルトのFORMATロケールでデフォルト・タイム・ゾーンの現在の時間を使用してデフォルトのGregorianCalendarを構築します。GregorianCalendar(int year, int month, int dayOfMonth) デフォルト・ロケールでデフォルト・タイム・ゾーンの指定された日付に基づいてGregorianCalendarを構築します。GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) デフォルト・ロケールでデフォルト・タイム・ゾーンの指定された日付と時間に基づいてGregorianCalendarを構築します。GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) デフォルト・ロケールでデフォルト・タイム・ゾーンの指定された日付と時刻に基づいてGregorianCalendarを構築します。GregorianCalendar(Locale aLocale) 指定されたロケールでデフォルト・タイム・ゾーンの現在の時間に基づいてGregorianCalendarを構築します。GregorianCalendar(TimeZone zone) デフォルトのFORMATロケールで指定されたタイムゾーンの現在の時間に基づいてGregorianCalendarを構築します。GregorianCalendar(TimeZone zone, Locale aLocale) 指定されたロケールで指定されたタイムゾーンの現在の時間に基づいてGregorianCalendarを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明voidadd(int field, int amount) カレンダのルールに基づいて、指定された(符号付きの)時間量を、指定されたカレンダ・フィールドに加えます。protected void時間値(元期からのミリ秒単位のオフセット)をカレンダ・フィールド値に変換します。protected voidカレンダ・フィールド値を時間値(元期からのミリ秒単位のオフセット)に変換します。booleanこのGregorianCalendarを指定されたObjectと比較します。static GregorianCalendarfrom(ZonedDateTime zdt) ZonedDateTimeオブジェクトからデフォルトのロケールを使ってGregorianCalendarのインスタンスを取得します。intgetActualMaximum(int field) このカレンダ・フィールドが持つことのできる最大値を返します。このとき、指定された時間値と、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドの現在値が考慮されます。intgetActualMinimum(int field) このカレンダ・フィールドが持つことのできる最小値を返します。このとき、指定された時間値と、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドの現在値が考慮されます。カレンダ・タイプとして"gregory"を返します。intgetGreatestMinimum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大最小値を返します。final Dateグレゴリオ暦の切換え日を取得します。intgetLeastMaximum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小最大値を返します。intgetMaximum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大値を返します。intgetMinimum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小値を返します。intこのGregorianCalendarで表される暦週の基準年に含まれる週数を返します。intこのGregorianCalendarで表される暦週の基準年を返します。inthashCode()このGregorianCalendarオブジェクトのハッシュ・コードを生成します。booleanisLeapYear(int year) 指定された年が、うるう年かどうかを判定します。final booleanこのGregorianCalendarが暦週日付をサポートしていることを示すtrueを返します。voidroll(int field, boolean up) 大きいフィールドを変更せずに指定された時間フィールドの1つの単位の時間を上または下に加算または減算します。voidroll(int field, int amount) 大きいフィールドを変更せずに、符号付きの量を指定されたカレンダ・フィールドに加えます。voidsetGregorianChange(Date date) GregorianCalendarの切換え日を設定します。voidsetWeekDate(int weekYear, int weekOfYear, int dayOfWeek) このGregorianCalendarを日付指示子 -weekYear、weekOfYear、およびdayOfWeekで指定された日付に設定します。このオブジェクトを、時系列上でこのGregorianCalendarと同じ時点を表すZonedDateTimeに変換します。クラスjava.util.Calendarで宣言されたメソッド
after, before, clear, clear, clone, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, getTimeZone, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, setTimeZone, toInstant, toString
-
フィールド詳細
-
BC
public static final int BCキリスト紀元より前の期間(BC)を示すERAフィールドの値であり、BCEとも呼ばれます。BCからADへの移行は、..., 2 BC, 1 BC, 1 AD, 2 AD,... のように行われます。- 関連項目:
-
AD
public static final int ADキリスト紀元(西暦)を示すERAフィールドの値であり、CEとも呼ばれます。BCからADへの移行は、..., 2 BC, 1 BC, 1 AD, 2 AD,... のように行われます。- 関連項目:
-
-
コンストラクタの詳細
-
GregorianCalendar
public GregorianCalendar()デフォルトのFORMATロケールでデフォルト・タイム・ゾーンの現在の時間を使用してデフォルトのGregorianCalendarを構築します。 -
GregorianCalendar
public GregorianCalendar(TimeZone zone) デフォルトのFORMATロケールで指定されたタイムゾーンの現在の時間に基づいてGregorianCalendarを構築します。- パラメータ:
zone- 指定されたタイムゾーン。- スロー:
NullPointerException-zoneがnullである場合
-
GregorianCalendar
public GregorianCalendar(Locale aLocale) 指定されたロケールでデフォルト・タイム・ゾーンの現在の時間に基づいてGregorianCalendarを構築します。- パラメータ:
aLocale- 指定されたロケール。- スロー:
NullPointerException-aLocaleがnullの場合
-
GregorianCalendar
指定されたロケールで指定されたタイムゾーンの現在の時間に基づいてGregorianCalendarを構築します。- パラメータ:
zone- 指定されたタイムゾーン。aLocale- 指定されたロケール。- スロー:
NullPointerException-zoneまたはaLocaleがnullの場合
-
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。
-
getCalendarType
public String getCalendarType()カレンダ・タイプとして"gregory"を返します。- オーバーライド:
getCalendarTypein classCalendar- 戻り値:
"gregory"- 導入されたバージョン:
- 1.8
- 関連項目:
-
equals
-
hashCode
-
add
public void add(int field, int amount) カレンダのルールに基づいて、指定された(符号付きの)時間量を、指定されたカレンダ・フィールドに加えます。Addルール1。 呼出しが
fieldで発生したモジュロ・オーバーフローamountになる前に、呼出しでfieldの値を引いたあとのfieldの値です。 オーバーフローは、フィールドの値が範囲を超え、その結果、次の大きいフィールドが増分または減分されて、フィールドの値がその範囲に入るよう調整された場合に発生します。Addルール2。 小さいフィールドが不変式であると予想される場合に、
fieldが変更されてから最小値または最大値が変更されたために、その前の値と等しくならないと、フィールドの値はその予想される値にできるだけ近くなるように調整されます。 小さいフィールドは、小さい時間の単位を表します。HOURはDAY_OF_MONTHよりも小さいフィールドです。 不変式ではないと予想される小さいフィールドは、調整されません。 暦体系では、不変式であると予想されるフィールドが判断されます。- 定義:
add、クラスCalendar- パラメータ:
field- カレンダ・フィールド。amount- フィールドに追加される日付または時間の量。- スロー:
IllegalArgumentException-fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。- 関連項目:
-
roll
public void roll(int field, boolean up) 大きいフィールドを変更せずに指定された時間フィールドの1つの単位の時間を上または下に加算または減算します。例: 1999年12月31日に当初設定された
GregorianCalendarを考えます。roll(Calendar.MONTH, true)を呼び出すと、カレンダが1999年1月31日に設定されます。YEARフィールドはMONTHよりも大きいフィールドなので変更されません。- 定義:
roll、クラスCalendar- パラメータ:
field- 時間フィールド。up- 指定されたカレンダ・フィールドの値を上へ動かすのか、下へ動かすのかを指定する。 上へ動かす場合はtrue、そうでない場合はfalseを使用する。- スロー:
IllegalArgumentException-fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。- 関連項目:
-
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-fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。- 導入されたバージョン:
- 1.2
- 関連項目:
-
getMinimum
public int getMinimum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小値を返します。 最小値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetメソッドが返す最小値として定義されます。- 定義:
getMinimum、クラスCalendar- パラメータ:
field- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドの最小値。
- 関連項目:
-
getMaximum
public int getMaximum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大値を返します。 最大値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetメソッドが返す最大値として定義されます。- 定義:
getMaximum、クラスCalendar- パラメータ:
field- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドの最大値。
- 関連項目:
-
getGreatestMinimum
public int getGreatestMinimum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大最小値を返します。 最大最小値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMinimum(int)メソッドが返す最大値として定義されます。- 定義:
getGreatestMinimum、クラスCalendar- パラメータ:
field- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドのもっとも大きい最小値。
- 関連項目:
-
getLeastMaximum
public int getLeastMaximum(int field) このGregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小最大値を返します。 最小最大値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMaximum(int)メソッドが返す最小値として定義されます。- 定義:
getLeastMaximum、クラスCalendar- パラメータ:
field- カレンダ・フィールド- 戻り値:
- 指定されたカレンダ・フィールドの最小最大値。
- 関連項目:
-
getActualMinimum
public int getActualMinimum(int field) このカレンダ・フィールドが持つことのできる最小値を返します。このとき、指定された時間値と、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、および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
- 関連項目:
-
getActualMaximum
public int getActualMaximum(int field) このカレンダ・フィールドが持つことのできる最大値を返します。このとき、指定された時間値と、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドの現在値が考慮されます。 たとえば、このインスタンスの日付が2004年2月1日だとすると、DAY_OF_MONTHフィールドの実際の最大値は29になります。これは、2004年がうるう年のため、このインスタンスの日付が2005年2月1日であれば、この値は28になります。このメソッドは、暦週の基準年でなく、
YEAR(暦年)の値に基づいてWEEK_OF_YEARの最大値を計算します。getWeeksInWeekYear()をコールして、このGregorianCalendarの週年のWEEK_OF_YEARの最大値を取得します。- オーバーライド:
getActualMaximum、クラスCalendar- パラメータ:
field- カレンダ・フィールド- 戻り値:
- この
GregorianCalendarの時間値に対する、指定されたフィールドの最大値 - 導入されたバージョン:
- 1.2
- 関連項目:
-
isWeekDateSupported
public final boolean isWeekDateSupported()このGregorianCalendarが暦週日付をサポートしていることを示すtrueを返します。- オーバーライド:
isWeekDateSupported、クラスCalendar- 戻り値:
true(常時)- 導入されたバージョン:
- 1.7
- 関連項目:
-
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
- 関連項目:
-
setWeekDate
public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) このGregorianCalendarを日付指示子 -weekYear、weekOfYear、およびdayOfWeekで指定された日付に設定します。weekOfYearはWEEK_OF_YEARの番号付けに従います。dayOfWeek値は、DAY_OF_WEEKのいずれかの値(SUNDAYからSATURDAYまで)である必要があります。数値による曜日の表現はISO 8601規格と異なっていること、および
weekOfYearの番号付けはgetFirstDayOfWeek()がMONDAYでgetMinimalDaysInFirstWeek()が4の場合にこの規格に準拠することに注意してください。setメソッドと異なり、すべてのカレンダ・フィールドおよび時間値のインスタントは返された時点で計算されます。weekOfYearがweekYear内の有効な週番号の範囲外である場合は、weekYearおよびweekOfYear値が非厳密モードで調整されるか、IllegalArgumentExceptionが厳密モードでスローされます。- オーバーライド:
setWeekDate、クラスCalendar- パラメータ:
weekYear- 暦週の基準年weekOfYear-weekYearに基づく週番号dayOfWeek- 曜日の値。DAY_OF_WEEKフィールドの定数(SUNDAY、...、SATURDAY)の1つ。- スロー:
IllegalArgumentException- 厳密モードで、指定されたいずれかの日付指定子が無効であるか、いずれかのカレンダ・フィールドが、指定された日付指定子と矛盾している場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
getWeeksInWeekYear
public int getWeeksInWeekYear()このGregorianCalendarで表される暦週の基準年に含まれる週数を返します。たとえば、この
GregorianCalendarの日付が2008年12月31日の場合、ISO 8601準拠の設定では、このメソッドは、2008年12月29日から2010年1月3日までの期間に相当する53を返しますが、getActualMaximum(WEEK_OF_YEAR)の場合は2007年12月31日から2008年12月28日までの期間に相当する52を返します。- オーバーライド:
getWeeksInWeekYear、クラスCalendar- 戻り値:
- 暦週の基準年に含まれる週数。
- 導入されたバージョン:
- 1.7
- 関連項目:
-
computeFields
protected void computeFields()時間値(元期からのミリ秒単位のオフセット)をカレンダ・フィールド値に変換します。 時間は最初に再計算されません。時間、フィールドの順に再計算するには、completeメソッドを呼び出します。- 定義:
computeFields、クラスCalendar- 関連項目:
-
computeTime
protected void computeTime()カレンダ・フィールド値を時間値(元期からのミリ秒単位のオフセット)に変換します。- 定義:
computeTime、クラスCalendar- スロー:
IllegalArgumentException- 無効なカレンダ・フィールドがある場合。- 関連項目:
-
toZonedDateTime
public ZonedDateTime toZonedDateTime()このオブジェクトを、時系列上でこのGregorianCalendarと同じ時点を表すZonedDateTimeに変換します。このオブジェクトはユリウス/グレゴリオ暦の切換え日をサポートしていますが、
ZonedDateTimeはサポートしていないため、結果となる年、月、および日が異なる値になる可能性があります。 結果は、修正ユリウス日の同じ値でもある、ISO暦体系での正しい日付を表します。- 戻り値:
- 時系列上でこのグレゴリオ暦と同じ時点を表すゾーン付き日付/時間
- 導入されたバージョン:
- 1.8
-
from
public static GregorianCalendar from(ZonedDateTime zdt) ZonedDateTimeオブジェクトからデフォルトのロケールを使ってGregorianCalendarのインスタンスを取得します。ZonedDateTimeはユリウス/グレゴリオ暦の切換え日をサポートしておらず、ISO暦体系を使用するため、返されるGregorianCalendarは純粋なグレゴリオ暦であり、週定義にはISO 8601標準が使われています。その標準では、FirstDayOfWeekはMONDAYであり、MinimalDaysInFirstWeekの値は4です。ZoneDateTimeは、GregorianCalendarに比べ、時系列上の将来および過去のより詳細な時点を格納できます。 このシナリオでは、このメソッドはIllegalArgumentException例外をスローします。- パラメータ:
zdt- 変換対象のゾーン付き日付/時間オブジェクト- 戻り値:
- 時系列上で指定されたゾーン付き日付/時間と同じ時点を表すグレゴリオ暦
- スロー:
NullPointerException-zdtがnullである場合IllegalArgumentException- そのゾーン付き日付/時間がGregorianCalendarとして表すには大きすぎる場合- 導入されたバージョン:
- 1.8
-