|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 日の間の日に調整することができます。
例:
// 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)
指定されたフィールドが変化する場合、その最大値を返します。 |
int |
getMinimum(int field)
指定されたフィールドの最大値 (たとえば、グレゴリオ暦の DAY_OF_MONTH では、31) を返します。 |
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.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
- デフォルトロケールでデフォルトタイムゾーンの指定された日付と時刻に基づいて GregorianCalendar を構築する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)
obj
- 比較対象のオブジェクト参照obj
に等しい場合は true、そうでない場合は falsepublic int hashCode()
public void add(int field, int amount)
field
- 時間フィールドamount
- このフィールドに加える日付または時間の量public void roll(int field, boolean up)
field
- 時間フィールドup
- このフィールド値を上へ動かすか、下へ動かすかを指定するpublic void roll(int field, int amount)
public int getMinimum(int field)
public int getMaximum(int field)
public int getGreatestMinimum(int field)
public int getLeastMaximum(int field)
public int getActualMinimum(int field)
public int getActualMaximum(int field)
protected void computeFields()
complete
メソッドを呼び出します。Calendar.complete()
protected void computeTime()
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |