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フィールドに対して計算される値の範囲は、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
Calendar.Builder| 修飾子と型 | フィールド | 説明 |
|---|---|---|
static int |
AD |
キリスト紀元(西暦)を示す
ERAフィールドの値であり、CEとも呼ばれます。 |
static int |
BC |
キリスト紀元より前の期間(BC)を示す
ERAフィールドの値であり、BCEとも呼ばれます。 |
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) |
カレンダのルールに基づいて、指定された(符号付きの)時間量を、指定されたカレンダ・フィールドに加えます。
|
Object |
clone() |
このオブジェクトのコピーを作成して、返します。
|
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インスタンスで指定されたカレンダ・フィールドの最小値を返します。 |
TimeZone |
getTimeZone() |
タイムゾーンを取得します。
|
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 |
setTimeZone(TimeZone zone) |
指定されたタイムゾーン値を使用してタイムゾーンを設定します。
|
void |
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) |
この
GregorianCalendarを日付指示子 - weekYear、weekOfYear、およびdayOfWeekで指定された日付に設定します。 |
ZonedDateTime |
toZonedDateTime() |
このオブジェクトを、時系列上でこの
GregorianCalendarと同じ時点を表すZonedDateTimeに変換します。 |
after, before, clear, clear, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, toInstant, toStringpublic static final int BC
ERAフィールドの値であり、BCEとも呼ばれます。 BCからADへの移行は、..., 2 BC, 1 BC, 1 AD, 2 AD,... のように行われます。 Calendar.ERA、定数フィールド値public static final int AD
ERAフィールドの値であり、CEとも呼ばれます。 BCからADへの移行は、..., 2 BC, 1 BC, 1 AD, 2 AD,... のように行われます。 Calendar.ERA、定数フィールド値public GregorianCalendar()
FORMATロケールでデフォルト・タイム・ゾーンの現在の時間を使用してデフォルトのGregorianCalendarを構築します。public GregorianCalendar(TimeZone zone)
FORMATロケールで指定されたタイムゾーンの現在の時間に基づいてGregorianCalendarを構築します。zone - 指定されたタイムゾーン。public GregorianCalendar(Locale aLocale)
GregorianCalendarを構築します。aLocale - 指定されたロケール。public GregorianCalendar(TimeZone zone, Locale aLocale)
GregorianCalendarを構築します。zone - 指定されたタイムゾーン。aLocale - 指定されたロケール。public GregorianCalendar(int year,
int month,
int dayOfMonth)
GregorianCalendarを構築します。year - カレンダ内のYEARカレンダ・フィールドの設定に使用する値。month - カレンダ内のMONTHカレンダ・フィールドの設定に使用する値。 Month値は0から始まる(1月は0になる)。 dayOfMonth - カレンダ内のDAY_OF_MONTHカレンダ・フィールドの設定に使用する値。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カレンダ・フィールドの設定に使用する値。public GregorianCalendar(int year,
int month,
int dayOfMonth,
int hourOfDay,
int minute,
int second)
year - カレンダ内のYEARカレンダ・フィールドの設定に使用する値。month - カレンダ内のMONTHカレンダ・フィールドの設定に使用する値。 Month値は0から始まる(1月は0になる)。 dayOfMonth - カレンダ内のDAY_OF_MONTHカレンダ・フィールドの設定に使用する値。hourOfDay - カレンダ内のHOUR_OF_DAYカレンダ・フィールドの設定に使用する値。minute - カレンダ内のMINUTEカレンダ・フィールドの設定に使用する値。second - カレンダ内のSECONDカレンダ・フィールドの設定に使用する値。public void setGregorianChange(Date date)
GregorianCalendarの切換え日を設定します。 これは、ユリウス暦からグレゴリオ暦への切換えが発生する時点です。 デフォルトは1582年10月15日(グレゴリオ暦)です。 これ以前の日付はユリウス暦になります。
純粋なユリウス暦を取得するには、切換え日をDate(Long.MAX_VALUE)に設定します。 純粋なグレゴリオ歴を取得するには、切換え日をDate(Long.MIN_VALUE)に設定します。
date - グレゴリオ暦への変更日付。public final Date getGregorianChange()
GregorianCalendarオブジェクトのグレゴリオ暦への切換え日。public boolean isLeapYear(int year)
trueが返されます。 BC年の数値を指定する場合は、1 - year numberを指定する必要があります。 たとえば、BC 4年は -3と指定します。 year - 指定する年。true、そうでない場合はfalse。public String getCalendarType()
"gregory"を返します。getCalendarType in class Calendar"gregory"Locale.Builder.setLocale(Locale), Locale.Builder.setUnicodeLocaleKeyword(String, String)public boolean equals(Object obj)
GregorianCalendarを指定されたObjectと比較します。 引数が、このオブジェクトと同じCalendarパラメータおよびグレゴリオ暦切替え日の同じ時刻値(元期からのミリ秒単位のオフセット)を表すGregorianCalendarオブジェクトである場合にのみ、結果はtrueになります。 equals、クラスCalendarobj - 比較対象のオブジェクト。objに等しい場合はtrue。それ以外の場合はfalse。Calendar.compareTo(Calendar)public int hashCode()
GregorianCalendarオブジェクトのハッシュ・コードを生成します。hashCode、クラスCalendarObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public void add(int field,
int amount)
Addルール1。 呼出しがfieldで発生したモジュロ・オーバーフローamountになる前に、呼出しでfieldの値を引いたあとのfieldの値です。 オーバーフローは、フィールドの値が範囲を超え、その結果、次の大きいフィールドが増分または減分されて、フィールドの値がその範囲に入るよう調整された場合に発生します。
Addルール2。 小さいフィールドが不変式であると予想される場合に、fieldが変更されてから最小値または最大値が変更されたために、その前の値と等しくならないと、フィールドの値はその予想される値にできるだけ近くなるように調整されます。 小さいフィールドは、小さい時間の単位を表します。 HOURはDAY_OF_MONTHよりも小さいフィールドです。 不変式ではないと予想される小さいフィールドは、調整されません。 暦体系では、不変式であると予想されるフィールドが判断されます。
add、クラスCalendarfield - カレンダ・フィールド。amount - フィールドに追加される日付または時間の量。IllegalArgumentException - fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。Calendar.roll(int,int), Calendar.set(int,int)public void roll(int field,
boolean up)
例: 1999年12月31日に当初設定されたGregorianCalendarを考えます。 roll(Calendar.MONTH, true)を呼び出すと、カレンダが1999年1月31日に設定されます。 YEARフィールドはMONTHよりも大きいフィールドなので変更されません。
roll、クラスCalendarup - 指定されたカレンダ・フィールドの値を上へ動かすのか、下へ動かすのかを指定する。 上へ動かす場合はtrue、そうでない場合はfalseを使用する。 field - 時間フィールド。IllegalArgumentException - fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。add(int,int), Calendar.set(int,int)public void roll(int field,
int amount)
このメソッドは、量を追加する前に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、クラスCalendarfield - カレンダ・フィールド。amount - fieldに追加する指定された量。IllegalArgumentException - fieldがZONE_OFFSET、DST_OFFSET、または不明である場合、またはいずれかのカレンダ・フィールドが厳密モードで範囲外の値を保持する場合。roll(int,boolean), add(int,int), Calendar.set(int,int)public int getMinimum(int field)
GregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小値を返します。 最小値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetメソッドが返す最小値として定義されます。 getMinimum、クラスCalendarfield - カレンダ・フィールド。getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public int getMaximum(int field)
GregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大値を返します。 最大値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetメソッドが返す最大値として定義されます。 getMaximum、クラスCalendarfield - カレンダ・フィールド。getMinimum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public int getGreatestMinimum(int field)
GregorianCalendarインスタンスで指定されたカレンダ・フィールドの最大最小値を返します。 最大最小値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMinimum(int)メソッドが返す最大値として定義されます。 getGreatestMinimum、クラスCalendarfield - カレンダ・フィールド。getMinimum(int), getMaximum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public int getLeastMaximum(int field)
GregorianCalendarインスタンスで指定されたカレンダ・フィールドの最小最大値を返します。 最小最大値は、getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange、およびgetTimeZoneの各メソッドのそれぞれの現在値を考慮したうえで、すべての可能な時間値に対してgetActualMaximum(int)メソッドが返す最小値として定義されます。 getLeastMaximum、クラスCalendarfield - カレンダ・フィールドgetMinimum(int), getMaximum(int), getGreatestMinimum(int), getActualMinimum(int), getActualMaximum(int)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、クラスCalendarfield - カレンダ・フィールドGregorianCalendarの時間値に対する、指定されたカレンダ・フィールドの最小値getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMaximum(int)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、クラスCalendarfield - カレンダ・フィールドGregorianCalendarの時間値に対する、指定されたフィールドの最大値getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int)public TimeZone getTimeZone()
CalendargetTimeZone、クラスCalendarpublic void setTimeZone(TimeZone zone)
CalendarsetTimeZone、クラスCalendarzone - 指定されたタイムゾーン。public final boolean isWeekDateSupported()
GregorianCalendarが暦週日付をサポートしていることを示すtrueを返します。isWeekDateSupported、クラスCalendartrue (常時)getWeekYear(), setWeekDate(int,int,int), getWeeksInWeekYear()public int getWeekYear()
GregorianCalendarで表される暦週の基準年を返します。 特定の暦週の基準年において、第1週から最大の週番号までの間にある各週の各日付では、暦週の基準年の値が同じになり、この値はYEAR (暦年)の値よりも1年前またはあとになることがあります。
このメソッドは、暦週の基準年を計算する前にCalendar.complete()を呼び出します。
getWeekYear、クラスCalendarGregorianCalendarで表される暦週の基準年。 ERA値がBCの場合、年は0または負の値で表現され、たとえばBC 1は0、BC 2は -1、BC 3は -2などのようになります。 IllegalArgumentException - いずれかのカレンダ・フィールドが厳密モードで無効な場合。isWeekDateSupported(), getWeeksInWeekYear(), Calendar.getFirstDayOfWeek(), Calendar.getMinimalDaysInFirstWeek()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、クラスCalendarweekYear - 暦週の基準年weekOfYear - weekYearに基づく週番号dayOfWeek - 曜日の値。DAY_OF_WEEKフィールドの定数(SUNDAY、...、SATURDAY)の1つ。IllegalArgumentException - 厳密モードで、指定されたいずれかの日付指定子が無効であるか、いずれかのカレンダ・フィールドが、指定された日付指定子と矛盾している場合isWeekDateSupported(), Calendar.getFirstDayOfWeek(), Calendar.getMinimalDaysInFirstWeek()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、クラスCalendarCalendar.WEEK_OF_YEAR, getWeekYear(), getActualMaximum(int)protected void computeFields()
completeメソッドを呼び出します。 computeFields、クラスCalendarCalendar.complete()protected void computeTime()
computeTime、クラスCalendarIllegalArgumentException - 無効なカレンダ・フィールドがある場合。Calendar.complete(), Calendar.computeFields()public ZonedDateTime toZonedDateTime()
GregorianCalendarと同じ時点を表すZonedDateTimeに変換します。
このオブジェクトはユリウス/グレゴリオ暦の切換え日をサポートしていますが、ZonedDateTimeはサポートしていないため、結果となる年、月、および日が異なる値になる可能性があります。 結果は、修正ユリウス日の同じ値でもある、ISO暦体系での正しい日付を表します。
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として表すには大きすぎる場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。