|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.Calendar | +--java.util.GregorianCalendar
GregorianCalendar
は、Calendar
の具象サブクラスであり、世界のほとんどの地域で使用される標準的なカレンダを提供します。
標準 (グレゴリオ) カレンダには、BC (紀元前) と AD (紀元後) という区分があります。
この実装では、1 つの変わり目を処理します。この変わり目は、デフォルト値により、グレゴリオ暦が制定された日 (一部の国では 1582 年 10 月 15 日、その他の国ではそれ以後) に対応しています。調整日は、setGregorianChange()
を呼び出すことによって呼び出し側で変更できます。
歴史的に、グレゴリオ暦を最初に採用した国々では、1582 年 10 月 4 日のあとに 1582 年 10 月 15 日が続きました。このカレンダはこれを正確にモデル化しています。グレゴリオ暦への切り換え日の前は、GregorianCalendar
ではユリウス暦を実装しています。グレゴリオ暦とユリウス暦の唯一の違いはうるう年の規則です。ユリウス暦は 4 年ごとにうるう年を指定しますが、グレゴリオ暦では、100 で割り切れて、かつ 400 で割り切れない年をうるう年にしません。
GregorianCalendar
は、「予期的」グレゴリオ暦およびユリウス暦を実装します。すなわち、日付の計算では、現在の規則を無限の過去あるいは未来に向けて適用します。このため、GregorianCalendar
はすべての年について一貫した結果を生成するために使用できます。ただし、GregorianCalendar
を使用して得られた日付は、歴史的に、現代と同様のユリウス暦が採用され AD 4 年 3 月 1 日以降の日付だけが正確です。この日付より前には、うるう年の規則は不規則に適用されており、BC 45 年以前にはユリウス暦は存在さえしていませんでした。
グレゴリオ暦の制定より前は、元日は 3 月 25 日でした。混乱を避けるために、このカレンダでは常に 1 月 1 日を使います。必要であれば、グレゴリオ暦より前の日付に対し、1 月 1 日から 3 月 24 日の間の日に調整することができます。
WEEK_OF_YEAR
フィールドに対して計算される値の範囲は、1 から 53 です。年の第 1 週は、その年から少なくとも getMinimalDaysInFirstWeek()
日を含む getFirstDayOfWeek()
で始まるもっとも早い 7 日間です。このように第 1 週は getMinimalDaysInFirstWeek()
、getFirstDayOfWeek()
の値、および 1 月 1 日の曜日により変化します。1 年の第 1 週から翌年の第 1 週までの週は、必要に応じて 2 から 52 または 53 まで順に番号が付けられます。
たとえば、1998 年 1 月 1 日は木曜日でした。getFirstDayOfWeek()
が MONDAY
で getMinimalDaysInFirstWeek()
が 4 の場合 (これらは ISO 8601 および多数の国の標準)、1998 年の第 1 週は 1997年 12 月 29 日から、1998 年 1 月 4 日までです。ただし、getFirstDayOfWeek()
が SUNDAY
の場合、1998 年の第 1 週は 1998 年 1 月 4 日から、1998 年 1 月 10 日までです。1998 年の最初の 3 日間は 1997 年の第 53 週に入ります。
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 になります。
例:
// 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)
カレンダの規則に基づいて、指定された (符号付きの) 時間量を、指定された時間フィールドに加えます。 |
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)
指定されたフィールドの最大値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、31) を返します。 |
int |
getMinimum(int field)
指定されたフィールドの最小値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、1) を返します。 |
int |
hashCode()
ハッシュコードをオーバーライドします。 |
boolean |
isLeapYear(int year)
指定された年が、うるう年かどうかを判定します。 |
void |
roll(int field,
boolean up)
大きいフィールドを変更せずに指定された時間フィールドの 1 つの単位の時間を上または下に加算または減算します。 |
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 |
フィールドの詳細 |
public 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()
public GregorianCalendar(TimeZone zone)
zone
- 指定されたタイムゾーンpublic GregorianCalendar(Locale aLocale)
aLocale
- 指定されたロケールpublic GregorianCalendar(TimeZone zone, Locale aLocale)
zone
- 指定されたタイムゾーンaLocale
- 指定されたロケールpublic GregorianCalendar(int year, int month, int date)
year
- カレンダの YEAR 時間フィールドに設定する値month
- カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)date
- カレンダの DATE 時間フィールドに設定する値public GregorianCalendar(int year, int month, int date, int hour, int minute)
year
- カレンダの YEAR 時間フィールドに設定する値month
- カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)date
- カレンダの DATE 時間フィールドに設定する値hour
- カレンダの HOUR_OF_DAY 時間フィールドに設定する値minute
- カレンダの MINUTE 時間フィールドに設定する値public GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
year
- カレンダの YEAR 時間フィールドに設定する値month
- カレンダの MONTH 時間フィールドに設定する値。month の値は 0 から始まる (例: 0 は 1 月)date
- カレンダの DATE 時間フィールドに設定する値hour
- カレンダの HOUR_OF_DAY 時間フィールドに設定する値minute
- カレンダの MINUTE 時間フィールドに設定する値second
- カレンダの SECOND 時間フィールドに設定する値メソッドの詳細 |
public void setGregorianChange(Date date)
純粋なユリウス暦を取得するには、切り換え日を Date(Long.MAX_VALUE)
に設定します。純粋なグレゴリオ歴を取得するには、切り換え日を Date(Long.MIN_VALUE)
に設定します。
date
- グレゴリオ暦への変更日付public final Date getGregorianChange()
public boolean isLeapYear(int year)
year
- 指定する年
public boolean equals(Object obj)
Calendar
内の equals
obj
- 比較対象のオブジェクト参照
obj
に等しい場合は true、そうでない場合は falsepublic int hashCode()
Calendar
内の hashCode
public void add(int field, int amount)
Add rule 1。呼び出しがフィールドで発生したモジュロオーバーフロー amount
になる前に、呼び出しでフィールド の値を引いたあとの field
の値です。オーバーフローは、フィールドの値が範囲を超えて、その結果次の大きいフィールドが増分または減分され、フィールドの値がその範囲に入るよう調整された場合に発生します。
Add rule 2。小さいフィールドが不変式であると予想される場合に、field
が変更されてから最小値または最大値が変更されたために、その前の値と等しくならないと、フィールドの値はその予想される値にできるだけ近くなるように調整されます。小さいフィールドは、小さい時間の単位を表します。HOUR
は、DAY_OF_MONTH
よりも小さいフィールドです。不変式ではないと予想される小さいフィールドは、調整されません。カレンダシステムでは、不変式であると予想されるフィールドが判断されます。
Calendar
内の add
field
- 時間フィールドamount
- フィールドに追加される日付または時刻の量
IllegalArgumentException
- 認識できないフィールドが指定された場合public void roll(int field, boolean up)
例: 1999 年 12 月 31 日に当初設定された GregorianCalendar
を考えます。roll(Calendar.MONTH, true)
を呼び出すと、カレンダが 1999 年 1 月 31 日に設定されます。Year
フィールドは MONTH
よりも大きいフィールドなので変更されません。
Calendar
内の roll
up
- 指定された時間フィールドの値を上へ動かすのか、下へ動かすのかを指定する。上へ動かす場合は true、そうでない場合は false を使用するfield
- 時間フィールド
IllegalArgumentException
- 認識できないフィールド値が指定された場合add(int, int)
,
Calendar.set(int, int)
public void roll(int field, int amount)
例: 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 rule 1 とともに使用すると、結果の日付は 6 月 1 日火曜日から 6 月 5 日土曜日までになる必要があります。add rule 2 にしたがって、WEEK_OF_MONTH
を変更するときに不変式 DAY_OF_WEEK
が、日曜日にもっとも近い可能値である火曜日に設定されます (日曜日が週の最初の日の場合)。
Calendar
内の roll
field
- 時間フィールドamount
- field
に追加する指定された量add(int, int)
,
Calendar.set(int, int)
public int getMinimum(int field)
Calendar
内の getMinimum
field
- 指定された時間フィールド
public int getMaximum(int field)
Calendar
内の getMaximum
field
- 指定された時間フィールド
public int getGreatestMinimum(int field)
Calendar
内の getGreatestMinimum
field
- 指定された時間フィールド
public int getLeastMaximum(int field)
Calendar
内の getLeastMaximum
field
- 指定された時間フィールド
public int getActualMinimum(int field)
Calendar
内の getActualMinimum
field
- 最小値を判定するフィールド
public int getActualMaximum(int field)
Calendar
内の getActualMaximum
field
- 最大値を判定するフィールド
protected void computeFields()
complete
メソッドを呼び出します。
Calendar
内の computeFields
Calendar.complete()
protected void computeTime()
Calendar
内の computeTime
IllegalArgumentException
- 無効なフィールドがある場合
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.