- すべての実装されたインタフェース:
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()
が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
-
ネストされたクラスのサマリー
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static int
AD
キリスト紀元(西暦)を示すERA
フィールドの値であり、CEとも呼ばれます。static int
BC
キリスト紀元より前の期間(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
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 GregorianCalendar()
デフォルトの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
を構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 void
add(int field, int amount)
カレンダのルールに基づいて、指定された(符号付きの)時間量を、指定されたカレンダ・フィールドに加えます。protected void
computeFields()
時間値(元期からのミリ秒単位のオフセット)をカレンダ・フィールド値に変換します。protected void
computeTime()
カレンダ・フィールド値を時間値(元期からのミリ秒単位のオフセット)に変換します。boolean
equals(Object obj)
このGregorianCalendar
を指定されたObject
と比較します。static GregorianCalendar
from(ZonedDateTime zdt)
ZonedDateTime
オブジェクトからデフォルトのロケールを使ってGregorianCalendar
のインスタンスを取得します。int
getActualMaximum(int field)
このカレンダ・フィールドが持つことのできる最大値を返します。このとき、指定された時間値と、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドの現在値が考慮されます。int
getActualMinimum(int field)
このカレンダ・フィールドが持つことのできる最小値を返します。このとき、指定された時間値と、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドの現在値が考慮されます。String
getCalendarType()
カレンダ・タイプとして"gregory"
を返します。int
getGreatestMinimum(int field)
このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最大最小値を返します。Date
getGregorianChange()
グレゴリオ暦の切換え日を取得します。int
getLeastMaximum(int field)
このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最小最大値を返します。int
getMaximum(int field)
このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最大値を返します。int
getMinimum(int field)
このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最小値を返します。int
getWeeksInWeekYear()
このGregorianCalendar
で表される暦週の基準年に含まれる週数を返します。int
getWeekYear()
このGregorianCalendar
で表される暦週の基準年を返します。int
hashCode()
このGregorianCalendar
オブジェクトのハッシュ・コードを生成します。boolean
isLeapYear(int year)
指定された年が、うるう年かどうかを判定します。boolean
isWeekDateSupported()
このGregorianCalendar
が暦週日付をサポートしていることを示すtrue
を返します。void
roll(int field, boolean up)
大きいフィールドを変更せずに指定された時間フィールドの1つの単位の時間を上または下に加算または減算します。void
roll(int field, int amount)
大きいフィールドを変更せずに、符号付きの量を指定されたカレンダ・フィールドに加えます。void
setGregorianChange(Date date)
GregorianCalendar
の切換え日を設定します。void
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
このGregorianCalendar
を日付指示子 -weekYear
、weekOfYear
、およびdayOfWeek
で指定された日付に設定します。ZonedDateTime
toZonedDateTime()
このオブジェクトを、時系列上でこの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,... のように行われます。- 関連項目:
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
指定されたロケールで指定されたタイムゾーンの現在の時間に基づいて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
。
-
getCalendarType
public String getCalendarType()カレンダ・タイプとして"gregory"
を返します。- オーバーライド:
getCalendarType
in classCalendar
- 戻り値:
"gregory"
- 導入されたバージョン:
- 1.8
- 関連項目:
- Locale extensions,
Locale.Builder.setLocale(Locale)
,Locale.Builder.setUnicodeLocaleKeyword(String, String)
-
equals
public boolean equals(Object obj)このGregorianCalendar
を指定されたObject
と比較します。 引数が、このオブジェクトと同じCalendar
パラメータおよびグレゴリオ暦切替え日の同じ時刻値(元期からのミリ秒単位のオフセット)を表すGregorianCalendar
オブジェクトである場合にのみ、結果はtrue
になります。- オーバーライド:
equals
、クラス:Calendar
- パラメータ:
obj
- 比較対象のオブジェクト。- 戻り値:
- このオブジェクトが
obj
に等しい場合はtrue
。それ以外の場合はfalse
。 - 関連項目:
Calendar.compareTo(Calendar)
-
hashCode
public int hashCode()このGregorianCalendar
オブジェクトのハッシュ・コードを生成します。- オーバーライド:
hashCode
、クラス:Calendar
- 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
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
、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。- 関連項目:
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
-field
がZONE_OFFSET
、DST_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
-field
がZONE_OFFSET
、DST_OFFSET
、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。- 導入されたバージョン:
- 1.2
- 関連項目:
roll(int,boolean)
,add(int,int)
,Calendar.set(int,int)
-
getMinimum
public int getMinimum(int field)このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最小値を返します。 最小値は、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してget
メソッドが返す最小値として定義されます。- 定義:
getMinimum
、クラス:Calendar
- パラメータ:
field
- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドの最小値。
- 関連項目:
getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getMaximum
public int getMaximum(int field)このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最大値を返します。 最大値は、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してget
メソッドが返す最大値として定義されます。- 定義:
getMaximum
、クラス:Calendar
- パラメータ:
field
- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドの最大値。
- 関連項目:
getMinimum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getGreatestMinimum
public int getGreatestMinimum(int field)このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最大最小値を返します。 最大最小値は、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMinimum(int)
メソッドが返す最大値として定義されます。- 定義:
getGreatestMinimum
、クラス:Calendar
- パラメータ:
field
- カレンダ・フィールド。- 戻り値:
- 指定されたカレンダ・フィールドのもっとも大きい最小値。
- 関連項目:
getMinimum(int)
,getMaximum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getLeastMaximum
public int getLeastMaximum(int field)このGregorianCalendar
インスタンスで指定されたカレンダ・フィールドの最小最大値を返します。 最小最大値は、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
、getGregorianChange
、およびgetTimeZone
の各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMaximum(int)
メソッドが返す最小値として定義されます。- 定義:
getLeastMaximum
、クラス:Calendar
- パラメータ:
field
- カレンダ・フィールド- 戻り値:
- 指定されたカレンダ・フィールドの最小最大値。
- 関連項目:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
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
- 関連項目:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMaximum(int)
-
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
の最大値を計算します。 このGregorianCalendar
での暦週の基準年においてWEEK_OF_YEAR
の最大値を取得するには、getWeeksInWeekYear()
を呼び出します。- オーバーライド:
getActualMaximum
、クラス:Calendar
- パラメータ:
field
- カレンダ・フィールド- 戻り値:
- この
GregorianCalendar
の時間値に対する、指定されたフィールドの最大値 - 導入されたバージョン:
- 1.2
- 関連項目:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
-
isWeekDateSupported
public final boolean isWeekDateSupported()このGregorianCalendar
が暦週日付をサポートしていることを示すtrue
を返します。- オーバーライド:
isWeekDateSupported
、クラス:Calendar
- 戻り値:
true
((常時))- 導入されたバージョン:
- 1.7
- 関連項目:
getWeekYear()
,setWeekDate(int,int,int)
,getWeeksInWeekYear()
-
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
を日付指示子 -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
- 関連項目:
isWeekDateSupported()
,Calendar.getFirstDayOfWeek()
,Calendar.getMinimalDaysInFirstWeek()
-
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
- 関連項目:
Calendar.WEEK_OF_YEAR
,getWeekYear()
,getActualMaximum(int)
-
computeFields
protected void computeFields()時間値(元期からのミリ秒単位のオフセット)をカレンダ・フィールド値に変換します。 時間は最初に再計算されません。時間、フィールドの順に再計算するには、complete
メソッドを呼び出します。- 定義:
computeFields
、クラス:Calendar
- 関連項目:
Calendar.complete()
-
computeTime
protected void computeTime()カレンダ・フィールド値を時間値(元期からのミリ秒単位のオフセット)に変換します。- 定義:
computeTime
、クラス:Calendar
- 例外:
IllegalArgumentException
- 無効なカレンダ・フィールドがある場合。- 関連項目:
Calendar.complete()
,Calendar.computeFields()
-
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
-