|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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 年ごとにうるう年を指定しますが、グレゴリオ暦では、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 から 4 または 1 から 5 です。月の第 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)
Calendar の Date 計算機能をオーバーライドします。 |
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)
Calendar の時間フィールドのローリング機能をオーバーライドします。 |
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.ERApublic 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 内の equalsobj - 比較対象のオブジェクト参照obj に等しい場合は true、そうでない場合は falsepublic int hashCode()
Calendar 内の hashCodejava.util.Calendar からコピーされたタグ:
public void add(int field,
int amount)
Calendar 内の addfield - 時間フィールドamount - フィールドに追加される日付または時刻の量IllegalArgumentException - 認識できないフィールドが指定された場合
public void roll(int field,
boolean up)
Calendar 内の rollfield - 時間フィールドup - このフィールド値を上へ動かすか、下へ動かすかを指定するIllegalArgumentException - 認識できないフィールド値が指定された場合
public void roll(int field,
int amount)
Calendar 内の rollpublic int getMinimum(int field)
Calendar 内の getMinimumjava.util.Calendar からコピーされたタグ:field - 指定された時間フィールドpublic int getMaximum(int field)
Calendar 内の getMaximumjava.util.Calendar からコピーされたタグ:field - 指定された時間フィールドpublic int getGreatestMinimum(int field)
Calendar 内の getGreatestMinimumjava.util.Calendar からコピーされたタグ:field - 指定された時間フィールドpublic int getLeastMaximum(int field)
Calendar 内の getLeastMaximumjava.util.Calendar からコピーされたタグ:field - 指定された時間フィールドpublic int getActualMinimum(int field)
Calendar 内の getActualMinimumpublic int getActualMaximum(int field)
Calendar 内の getActualMaximumprotected void computeFields()
complete メソッドを呼び出します。Calendar 内の computeFieldsCalendar.complete()protected void computeTime()
Calendar 内の computeTimeIllegalArgumentException - 無効なフィールドがある場合
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.