public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>
Calendar クラスは、特定の時点と YEAR、MONTH、DAY_OF_MONTH、HOUR などの calendar fields セット間の変換、および次週の日付の取得などのカレンダフィールド操作を行うための abstract クラスです。特定の時点は、1970 年 1 月 1 日 00:00:00.000 GMT (グレゴリオ暦) を元期とするミリ秒単位のオフセットで表現できます。
このクラスは、パッケージ外部の具象カレンダシステムを実装するための追加メソッドおよびフィールドも提供します。これらのフィールドおよびメソッドは、protected として定義されます。
ロケールに依存するほかのクラスと同じように、Calendar では、この種の一般に役立つオブジェクトを得るためのクラスメソッド getInstance が提供されます。Calendar の getInstance メソッドは、Calendar オブジェクトを返しますが、このカレンダフィールドは現在の日付と時間に初期化されています。
Calendar rightNow = Calendar.getInstance();
Calendar オブジェクトでは、特定の言語およびカレンダスタイル (日本のグレゴリオ暦、日本の旧暦など) に対して、日付と時間のフォーマットを行うときに必要なすべての時間フィールド値を生成できます。Calendar では、特定のフィールドとその意味の両方によって返される値の範囲が定義されます。たとえば、カレンダシステムの最初の月には、すべてのカレンダについて値 MONTH == JANUARY があります。ほかの値は、ERA などの具象サブクラスで定義されます。詳細は、個別のフィールドドキュメントおよびサブクラスドキュメントを参照してください。
カレンダフィールド値は、set メソッドを呼び出して設定できます。Calendar 内で設定されたフィールド値はすべて、その時間値 (「元期」からのミリ秒) またはカレンダフィールドの値を計算する必要が生じるまで解釈されません。get、getTimeInMillis、getTime、add、および roll の呼び出しでは、この種の計算が行われます。
Calendar は、カレンダフィールドを解釈する際、厳密および非厳密の 2 つのモードを使用します。非厳密モードの場合、Calendar はそれ自身が生成する値よりも広範なカレンダフィールド値を受け入れます。Calendar が、get() の値を返すためにカレンダフィールド値を再計算する際、すべてのカレンダフィールドが正規化されます。たとえば、非厳密な GregorianCalendar は、MONTH == JANUARY、DAY_OF_MONTH == 32 を 2 月 1 日として解釈します。
厳密モードの場合、カレンダフィールド内に不一致があると、Calendar は例外をスローします。たとえば、GregorianCalendar は、DAY_OF_MONTH 値として 1 とその月の長さの間の値を常に生成します。厳密な GregorianCalendar は、時間およびカレンダフィールド値を計算する際、範囲外のフィールド値が設定されていると例外をスローします。
Calendar 週の最初の日および最初の週の最小日数 (1 から 7) という 2 つのパラメータを使用して、ロケール固有の週 7 日が定義されます。これらの数は、Calendar が構築されるときにロケールリソースデータから取得されます。また、これらの値の設定用メソッドによって明示的に指定されることもあります。
WEEK_OF_MONTH フィールドや WEEK_OF_YEAR フィールドを設定または取得すると、Calendar では月または年の最初の週を参照点として決定する必要があります。月または年の最初の週は、getFirstDayOfWeek() で始まり、その月または年の少なくとも getMinimalDaysInFirstWeek() の日数を含む、もっとも早い 7 日間として定義されます。...、-1、0 という番号が付けられた週は、最初の週より前にあります。2、3、... という番号が付けられた週は、最初の週より後ろにあります。get() によって返される正規化された番号付けとは、異なる場合があります。たとえば、特定の Calendar サブクラスでは、1 年の週 1 の前の週を、前年の週 n として指定することがあります。
Calendar は、次の方法でカレンダフィールド値を解決し、日付および時間を判定します。
カレンダフィールド値にコンフリクトが存在する場合、Calendar はあとに設定されたフィールドを優先します。次に示すのは、カレンダフィールドのデフォルトの組み合わせです。もっとも最近に設定されたフィールドによって判定される、最新の組み合わせが使用されます。
時間フィールドの場合:YEAR + MONTH + DAY_OF_MONTH YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK YEAR + DAY_OF_YEAR YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
HOUR_OF_DAY AM_PM + HOUR
選択したフィールドの組み合わせで値が設定されていないカレンダフィールドが存在する場合、Calendar はデフォルト値を使用します。各フィールドのデフォルト値は、具象カレンダシステムにより異なります。GregorianCalendar の場合、フィールドのデフォルト値は、その元期の初めの値です。つまり、YEAR = 1970、MONTH = JANUARY、DAY_OF_MONTH = 1 などです。
注: 一部の特別な時間では、その解釈があいまいになることもあります。その場合は、次のように解決されます。
日付や時間のフォーマット文字列は、カレンダの定義の一部ではありません。これらが実行時にユーザーによって修正可能で、オーバーライド可能である必要があるためです。日付をフォーマットするには、DateFormat を使用してください。
set()、add()、および roll()。
set(f, value) では、カレンダフィールド f が value に変更されます。さらに、カレンダフィールド f が変更されたことを示すように内部メンバー変数が設定されます。カレンダフィールド f はただちに変更されますが、カレンダの時間値 (ミリ秒) は、get()、getTime()、getTimeInMillis()、add()、または roll() が次に呼び出されるまで再計算されません。このように、set() を複数回呼び出しても、不要な計算が行われることはありません。set() を使用してカレンダフィールドを変更すると、カレンダフィールド、カレンダフィールド値、およびカレンダシステムによってほかのフィールドも変更されることがあります。さらに、get(f) では、カレンダフィールドの再計算後に、set メソッドを呼び出して設定された value が必ず返されるとは限りません。これらの詳細は、具象カレンダクラスによって決定されます。
例:最初に 1999 年 8 月 31 日に設定された GregorianCalendar を考えます。set(Calendar.MONTH, Calendar.SEPTEMBER) を呼び出すと、日付が 1999 年 9 月 31 日に設定されます。これは一時的な内部表現であり、getTime() を呼び出すと 1999 年 10 月 1 日になります。ただし、getTime() を呼び出す前に set(Calendar.DAY_OF_MONTH, 30) を呼び出すと、set() 自体のあとに再計算が行われるために、日付が 1999 年 9 月 30 日に設定されます。
add(f, delta) では、フィールド f に delta が追加されます。これは、2 つの調整によって set(f, get(f) + delta) を呼び出すのと同じです。
Add 規則 1。呼び出しがフィールド
fで発生したモジュロオーバーフローdeltaになる前に、呼び出しでフィールドfの値を引いたあとのフィールドfの値です。オーバーフローは、フィールドの値が範囲を超え、その結果、次の大きいフィールドが増分または減分されて、フィールドの値がその範囲に入るよう調整された場合に発生します。Add 規則 2。小さいフィールドが不変式であると予想される場合に、フィールド
fが変更されてから最小値または最大値が変更された、またはタイムゾーンオフセットの変更などのほかの制約のために、その前の値と等しくならないと、フィールドの値はその予想される値にできるだけ近くなるように調整されます。小さいフィールドは、小さい時間の単位を表します。HOURはDAY_OF_MONTHよりも小さいフィールドです。不変式ではないと予想される小さいフィールドは、調整されません。カレンダシステムでは、不変式であると予想されるフィールドが判断されます。
さらに、set() とは異なり、add() ではカレンダのミリ秒およびすべてのフィールドがただちに強制的に再計算されます。
例:最初に 1999 年 8 月 31 日に設定された GregorianCalendar を考えます。add(Calendar.MONTH, 13) を呼び出すと、カレンダが 2000 年 9 月 30 日に設定されます。8 月に 13 か月を追加すると翌年の 9 月になるため、Add 規則 1 によって MONTH フィールドが 9 月に設定されます。DAY_OF_MONTH は GregorianCalendar では 9 月の 31 日にはできないため、Add 規則 2 によって DAY_OF_MONTH がもっとも近い可能な値の 30 に設定されます。これは小さいフィールドですが、GregorianCalendar で月が変更されるときに変更が予定されているため、DAY_OF_WEEK はルール 2 によっては調整されません。
roll(f, delta) では、大きいフィールドを変更せずにフィールド f に delta が追加されます。これは、以下の調整によって add(f, delta) を呼び出すのと同じです。
Roll rule。呼び出しのあと、大きいフィールドは変更されません。大きいフィールドは、大きい時間の単位を表します。
DAY_OF_MONTHはHOURよりも大きいフィールドです。
例:GregorianCalendar.roll(int, int) を参照してください。
使用法モデル。add() および roll() の動作を動機付けするために、月、日、年、および基本となる GregorianCalendar の増分ボタンと減分ボタンがあるユーザインタフェースコンポーネントを考えます。インタフェースで 1999 年 1 月 31 日が読み込まれ、ユーザーが月増分ボタンを押すと、何が読み込まれるでしょうか。基本となる実装で set() が使用される場合は、1999 年 3 月 3 日が読み込まれます。1999 年 2 月 28 日となるほうがよいのですが、さらに、ユーザーが月増分ボタンをふたたび押した場合は、1999 年 3 月 28 日ではなく 1999 年 3 月 31 日が読み込まれる必要があります。元の日付を保存して、大きなフィールドが影響されるかどうかによって add() または roll() を使用することで、ユーザインタフェースがほとんどのユーザーが直観的に期待するとおりに動作します。
System.currentTimeMillis(), Date, GregorianCalendar, TimeZone, DateFormat, 直列化された形式| 修飾子と型 | フィールドと説明 |
|---|---|
static int |
ALL_STYLES
「January」や「Jan」などのすべてのスタイルで名前を示す、
getDisplayNames のスタイル指示子です。 |
static int |
AM
深夜零時から正午の前までの時間を示す
AM_PM フィールドの値です。 |
static int |
AM_PM
get および set のためのフィールド値で、HOUR が正午より前であるかあとであるかを示します。 |
static int |
APRIL
グレゴリオ暦とユリウス暦の年の 4 番目の月を示す
MONTH フィールドの値です。 |
protected boolean |
areFieldsSet
fields[] が現在設定されている時間と同期をとっている場合は true です。 |
static int |
AUGUST
グレゴリオ暦とユリウス暦の年の 8 番目の月を示す
MONTH フィールドの値です。 |
static int |
DATE
get および set のためのフィールド値で、月の日を示します。 |
static int |
DAY_OF_MONTH
get および set のためのフィールド値で、月の日を示します。 |
static int |
DAY_OF_WEEK
get および set のためのフィールド値で、曜日を示します。 |
static int |
DAY_OF_WEEK_IN_MONTH
get および set のためのフィールド値で、現在の月の何度目の曜日かを示します。 |
static int |
DAY_OF_YEAR
get および set のためのフィールド値で、現在の年の何日目かを示します。 |
static int |
DECEMBER
グレゴリオ暦とユリウス暦の年の 12 番目の月を示す
MONTH フィールドの値です。 |
static int |
DST_OFFSET
get および set のためのフィールド値で、夏時間のオフセットをミリ秒単位で示します。 |
static int |
ERA
get および set のためのフィールド値で、ユリウス暦の AD または BC などの年代を示します。 |
static int |
FEBRUARY
グレゴリオ暦とユリウス暦の年の 2 番目の月を示す
MONTH フィールドの値です。 |
static int |
FIELD_COUNT
get および set によって認識される重複しないフィールドの数です。 |
protected int[] |
fields
このカレンダで現在設定されている時間に対するカレンダフィールド値です。
|
static int |
FRIDAY
金曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
HOUR
get および set のためのフィールド値で、午前または午後の何時かを示します。 |
static int |
HOUR_OF_DAY
get および set のためのフィールド値で、時間を示します。 |
protected boolean[] |
isSet
指定されたカレンダフィールドがカレンダで設定されているかどうかを示すフラグです。
|
protected boolean |
isTimeSet
time の値が有効である場合は true です。 |
static int |
JANUARY
グレゴリオ暦とユリウス暦の年の最初の月を示す
MONTH フィールドの値です。 |
static int |
JULY
グレゴリオ暦とユリウス暦の年の 7 番目の月を示す
MONTH フィールドの値です。 |
static int |
JUNE
グレゴリオ暦とユリウス暦の年の 6 番目の月を示す
MONTH フィールドの値です。 |
static int |
LONG
「January」のような長い名前を示す
getDisplayName および getDisplayNames のスタイル指示子です。 |
static int |
MARCH
グレゴリオ暦とユリウス暦の年の 3 番目の月を示す
MONTH フィールドの値です。 |
static int |
MAY
グレゴリオ暦とユリウス暦の年の 5 番目の月を示す
MONTH フィールドの値です。 |
static int |
MILLISECOND
get および set のためのフィールド値で、ミリ秒を示します。 |
static int |
MINUTE
get および set のためのフィールド値で、分を示します。 |
static int |
MONDAY
月曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
MONTH
get および set のためのフィールド値で、月を示します。 |
static int |
NOVEMBER
グレゴリオ暦とユリウス暦の年の 11 番目の月を示す
MONTH フィールドの値です。 |
static int |
OCTOBER
グレゴリオ暦とユリウス暦の年の 10 番目の月を示す
MONTH フィールドの値です。 |
static int |
PM
正午から深夜零時の前までの時間を示す
AM_PM フィールドの値です。 |
static int |
SATURDAY
土曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
SECOND
get および set のためのフィールド値で、秒を示します。 |
static int |
SEPTEMBER
グレゴリオ暦とユリウス暦の年の 9 番目の月を示す
MONTH フィールドの値です。 |
static int |
SHORT
「Jan」のような短い名前を示す
getDisplayName および getDisplayNames のスタイル指示子です。 |
static int |
SUNDAY
日曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
THURSDAY
木曜日を示す
DAY_OF_WEEK フィールドの値です。 |
protected long |
time
このカレンダで現在設定されている時間です。1970 年 1 月 1 日 0:00:00 (グリニッジ標準時) からの経過ミリ秒数で表されます。
|
static int |
TUESDAY
火曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
UNDECIMBER
13 番目の月を示す
MONTH フィールドの値です。 |
static int |
WEDNESDAY
水曜日を示す
DAY_OF_WEEK フィールドの値です。 |
static int |
WEEK_OF_MONTH
get および set のためのフィールド値で、現在の月の週番号を示します。 |
static int |
WEEK_OF_YEAR
get および set のためのフィールド値で、現在の年の週番号を示します。 |
static int |
YEAR
get および set のためのフィールド値で、年を示します。 |
static int |
ZONE_OFFSET
get および set のためのフィールド値で、GMT から直接計算したオフセットをミリ秒単位で示します。 |
| 修飾子 | コンストラクタと説明 |
|---|---|
protected |
Calendar()
デフォルトのタイムゾーンおよびロケールを使用して Calendar を作成します。
|
protected |
Calendar(TimeZone zone, Locale aLocale)
指定されたタイムゾーンおよびロケールを使用してカレンダを作成します。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
abstract void |
add(int field, int amount)
カレンダの規則に基づいて、指定された時間量を指定されたカレンダフィールドに加算または減算します。
|
boolean |
after(Object when)
この
Calendar が、指定された Object の表す時間よりあとの時間を表すかどうかを返します。 |
boolean |
before(Object when)
この
Calendar が、指定された Object の表す時間より前の時間を表すかどうかを返します。 |
void |
clear()
この
Calendar のすべてのカレンダフィールド値および時間値 (元期からのミリ秒単位のオフセット) を未定義に設定します。 |
void |
clear(int field)
この
Calendar の指定されたカレンダフィールド値および時間値 (元期からのミリ秒単位のオフセット) を未定義に設定します。 |
Object |
clone()
このオブジェクトのコピーを作成して、返します。
|
int |
compareTo(Calendar anotherCalendar)
2 つの
Calendar オブジェクトで表される時間値 (元期からのミリ秒単位のオフセット) を比較します。 |
protected void |
complete()
カレンダフィールドの未設定フィールドに値を入れます。
|
protected abstract void |
computeFields()
|
protected abstract void |
computeTime()
|
boolean |
equals(Object obj)
この
Calendar を指定された Object と比較します。 |
int |
get(int field)
指定されたカレンダフィールドの値を返します。
|
int |
getActualMaximum(int field)
この
Calendar に時間値を指定して、指定のカレンダフィールドが取り得る最大値を返します。 |
int |
getActualMinimum(int field)
この
Calendar に時間値を指定した、指定のカレンダフィールドが取り得る最小値を返します。 |
static Locale[] |
getAvailableLocales()
このクラスの
getInstance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。 |
String |
getDisplayName(int field, int style, Locale locale)
指定された
style と locale のカレンダ field 値の文字列表現を返します。 |
Map<String,Integer> |
getDisplayNames(int field, int style, Locale locale)
指定された
style および locale のカレンダ field のすべての名前と、それに対応するフィールド値を含む Map を返します。 |
int |
getFirstDayOfWeek()
週の最初の曜日が何であるかを取得します。たとえば、米国では
SUNDAY、フランスでは MONDAY です。 |
abstract int |
getGreatestMinimum(int field)
この
Calendar インスタンスで指定されたカレンダフィールドの最大最小値を返します。 |
static Calendar |
getInstance()
デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得します。
|
static Calendar |
getInstance(Locale aLocale)
デフォルトのタイムゾーンおよび指定されたロケールを使用してカレンダを取得します。
|
static Calendar |
getInstance(TimeZone zone)
指定されたタイムゾーンおよびデフォルトのロケールを使用してカレンダを取得します。
|
static Calendar |
getInstance(TimeZone zone, Locale aLocale)
指定されたタイムゾーンおよびロケールを使用してカレンダを取得します。
|
abstract int |
getLeastMaximum(int field)
この
Calendar インスタンスで指定されたカレンダフィールドの最小最大値を返します。 |
abstract int |
getMaximum(int field)
この
Calendar インスタンスで指定されたカレンダフィールドの最大値を返します。 |
int |
getMinimalDaysInFirstWeek()
年の最初の週に必要な最小日数を取得します。たとえば、最初の週が、年の第 1 週の 1 日目を含むものとして定義されている場合、このメソッドは 1 を返します。
|
abstract int |
getMinimum(int field)
この
Calendar インスタンスで指定されたカレンダフィールドの最小値を返します。 |
Date |
getTime()
|
long |
getTimeInMillis()
この Calendar の時間値をミリ秒で返します。
|
TimeZone |
getTimeZone()
タイムゾーンを取得します。
|
int |
getWeeksInWeekYear()
この
Calendar で表される暦週の基準年に含まれる週数を返します。 |
int |
getWeekYear()
この
Calendar で表される暦週の基準年を返します。 |
int |
hashCode()
このカレンダのハッシュコードを返します。
|
protected int |
internalGet(int field)
指定されたカレンダフィールドの値を返します。
|
boolean |
isLenient()
日付/時間の解釈が厳密でないかどうかを指定します。
|
boolean |
isSet(int field)
指定されたカレンダフィールドが値セットを保持するかどうかを判定します (
get メソッド呼び出しでトリガーされる内部フィールド計算によって値が設定された場合を含む)。 |
boolean |
isWeekDateSupported()
この
Calendar が暦週日付をサポートしているかどうかを返します。 |
abstract void |
roll(int field, boolean up)
大きいフィールドを変更せずに指定された時間フィールドの 1 つの単位の時間を上または下に加算または減算します。
|
void |
roll(int field, int amount)
大きいフィールドを変更せずに、指定された (符号付きの) 量を指定されたカレンダフィールドに加えます。
|
void |
set(int field, int value)
指定されたカレンダフィールドを指定された値に設定します。
|
void |
set(int year, int month, int date)
カレンダフィールド
YEAR、MONTH、および DAY_OF_MONTH の値を設定します。 |
void |
set(int year, int month, int date, int hourOfDay, int minute)
カレンダフィールド
YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、および MINUTE の値を設定します。 |
void |
set(int year, int month, int date, int hourOfDay, int minute, int second)
フィールド
YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、および SECOND の値を設定します。 |
void |
setFirstDayOfWeek(int value)
週の最初の曜日が何であるかを設定します。たとえば、米国では
SUNDAY、フランスでは MONDAY です。 |
void |
setLenient(boolean lenient)
日付/時間の解釈を厳密に行うかどうかを設定します。
|
void |
setMinimalDaysInFirstWeek(int value)
年の最初の週に必要な最小日数を設定します。たとえば、最初の週が、年の最初の月の最初の日を含むものとして定義されている場合は、値 1 でこのメソッドを呼び出します。
|
void |
setTime(Date date)
この Calendar の時間を、指定された
Date に設定します。 |
void |
setTimeInMillis(long millis)
Calendar の現在の時間を、指定された long 値から設定します。
|
void |
setTimeZone(TimeZone value)
指定されたタイムゾーン値を使用してタイムゾーンを設定します。
|
void |
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
この
Calendar の日付を指定された日付指示子 - 暦週の基準年、年の何週目かを表す値、および曜日で設定します。 |
String |
toString()
カレンダの文字列表現を返します。
|
public static final int ERA
get および set のためのフィールド値で、ユリウス暦の AD または BC などの年代を示します。これはカレンダ固有の値です。サブクラスのドキュメントを参照してください。public static final int YEAR
get および set のためのフィールド値で、年を示します。これはカレンダ固有の値です。サブクラスのドキュメントを参照してください。public static final int MONTH
get および set のためのフィールド値で、月を示します。これはカレンダ固有の値です。グレゴリオ暦とユリウス暦の年の最初の月は JANUARY で、0 となります。最後の月は、1 年の月の数によります。public static final int WEEK_OF_YEAR
get および set のためのフィールド値で、現在の年の週番号を示します。getFirstDayOfWeek() および getMinimalDaysInFirstWeek() で定義される年の最初の週には、値 1 が使用されます。サブクラスでは、年の最初の週より前の日に対して WEEK_OF_YEAR の値が定義されます。public static final int WEEK_OF_MONTH
get および set のためのフィールド値で、現在の月の週番号を示します。getFirstDayOfWeek() および getMinimalDaysInFirstWeek() で定義される月の最初の週には、値 1 が使用されます。サブクラスでは、月の最初の週より前の日に対して WEEK_OF_MONTH の値が定義されます。public static final int DATE
get および set のためのフィールド値で、月の日を示します。これは DAY_OF_MONTH と同義です。月の最初の日には、値 1 が使用されます。DAY_OF_MONTH, 定数フィールド値public static final int DAY_OF_MONTH
get および set のためのフィールド値で、月の日を示します。これは DATE と同義です。月の最初の日には、値 1 が使用されます。public static final int DAY_OF_YEAR
get および set のためのフィールド値で、現在の年の何日目かを示します。年の最初の日には、値 1 が使用されます。public static final int DAY_OF_WEEK
get および set のためのフィールド値で、曜日を示します。このフィールドの値は、SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、および SATURDAY になります。public static final int DAY_OF_WEEK_IN_MONTH
get および set のためのフィールド値で、現在の月の何度目の曜日かを示します。DAY_OF_WEEK フィールドとともに使用すると、月の日を一意に指定できます。WEEK_OF_MONTH および WEEK_OF_YEAR とは異なり、このフィールドの値は getFirstDayOfWeek() または getMinimalDaysInFirstWeek() には依存しません。DAY_OF_MONTH 1 から 7 は、常に DAY_OF_WEEK_IN_MONTH 1 に対応します。8 から 14 は、DAY_OF_WEEK_IN_MONTH 2 に対応し、以下同様になります。DAY_OF_WEEK_IN_MONTH 0 は DAY_OF_WEEK_IN_MONTH 1 の前の週を示します。負の値は月末から遡って数えられるため、月の最終日曜日は、DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1 と指定されます。負の値は遡って計算されるため、通常は当月内の正の値とは異なる位置に配置されます。たとえば、1 か月が 31 日の場合、DAY_OF_WEEK_IN_MONTH -1 は DAY_OF_WEEK_IN_MONTH 5 および 4 の最後とオーバーラップします。DAY_OF_WEEK, WEEK_OF_MONTH, 定数フィールド値public static final int AM_PM
get および set のためのフィールド値で、HOUR が正午より前であるかあとであるかを示します。たとえば、10:04:15.250 PM の場合、AM_PM は PM になります。public static final int HOUR
get および set のためのフィールド値で、午前または午後の何時かを示します。HOUR は 12 時間制 (0 から 11) です。正午および深夜零時は、12 ではなく 0 で表されます。たとえば、10:04:15.250 PM の場合、HOUR は 10 になります。AM_PM, HOUR_OF_DAY, 定数フィールド値public static final int HOUR_OF_DAY
get および set のためのフィールド値で、時間を示します。HOUR_OF_DAY は 24 時間制です。たとえば、10:04:15.250 PM の場合、HOUR_OF_DAY は 22 になります。public static final int MINUTE
get および set のためのフィールド値で、分を示します。たとえば、10:04:15.250 PM の場合、MINUTE は 4 になります。public static final int SECOND
get および set のためのフィールド値で、秒を示します。たとえば、10:04:15.250 PM の場合、SECOND は 15 になります。public static final int MILLISECOND
get および set のためのフィールド値で、ミリ秒を示します。たとえば、10:04:15.250 PM の場合、MILLISECOND は 250 になります。public static final int ZONE_OFFSET
get および set のためのフィールド値で、GMT から直接計算したオフセットをミリ秒単位で示します。
TimeZone 実装サブクラスが、GMT オフセットの歴史的変化をサポートする場合、このフィールドはこの Calendar のタイムゾーンの正確な GMT オフセット値を反映します。
public static final int DST_OFFSET
get および set のためのフィールド値で、夏時間のオフセットをミリ秒単位で示します。
TimeZone 実装サブクラスが、夏時間のスケジュールの歴史的変化をサポートする場合、このフィールドはこの Calendar のタイムゾーンの正確な夏時間のオフセット値を反映します。
public static final int FIELD_COUNT
get および set によって認識される重複しないフィールドの数です。フィールド数の範囲は 0..FIELD_COUNT-1 です。public static final int SUNDAY
DAY_OF_WEEK フィールドの値です。public static final int MONDAY
DAY_OF_WEEK フィールドの値です。public static final int TUESDAY
DAY_OF_WEEK フィールドの値です。public static final int WEDNESDAY
DAY_OF_WEEK フィールドの値です。public static final int THURSDAY
DAY_OF_WEEK フィールドの値です。public static final int FRIDAY
DAY_OF_WEEK フィールドの値です。public static final int SATURDAY
DAY_OF_WEEK フィールドの値です。public static final int SEPTEMBER
MONTH フィールドの値です。public static final int UNDECIMBER
MONTH フィールドの値です。GregorianCalendar ではこの値は使いませんが、太陰暦で使用します。public static final int ALL_STYLES
getDisplayNames のスタイル指示子です。public static final int SHORT
getDisplayName および getDisplayNames のスタイル指示子です。public static final int LONG
getDisplayName および getDisplayNames のスタイル指示子です。protected int[] fields
ERA から DST_OFFSET までの、FIELD_COUNT 整数値の配列です。protected boolean[] isSet
ERA から DST_OFFSET までの、FIELD_COUNT boolean 値の配列です。protected long time
isTimeSetprotected boolean isTimeSet
time の値が有効である場合は true です。field[] の項目を変更することで、time は無効になります。timeprotected boolean areFieldsSet
fields[] が現在設定されている時間と同期をとっている場合は true です。false の場合は、次にフィールドの値を取得しようとしたときに、time の現在値からすべてのフィールドを再計算するよう強制します。public static Calendar getInstance()
Calendar は、デフォルトロケールを持つデフォルトタイムゾーンの現在の時間に基づいています。public static Calendar getInstance(TimeZone zone)
Calendar は、デフォルトロケールを持つ指定されたタイムゾーンの現在の時間に基づいています。zone - 使用するタイムゾーンpublic static Calendar getInstance(Locale aLocale)
Calendar は、指定されたロケールを持つデフォルトタイムゾーンの現在の時間に基づいています。aLocale - 週のデータに使用するロケールpublic static Calendar getInstance(TimeZone zone, Locale aLocale)
Calendar は、指定されたロケールを持つデフォルトのタイムゾーンの現在の時間に基づいています。zone - 使用するタイムゾーンaLocale - 週のデータに使用するロケールpublic static Locale[] getAvailableLocales()
getInstance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。返される配列には、Locale.US と等価な Locale インスタンスが少なくとも 1 つ含まれている必要があります。Calendar インスタンスを使用可能なロケールの配列。protected abstract void computeTime()
complete(), computeFields()protected abstract void computeFields()
time を fields[] 内のカレンダフィールド値に変換します。これによって、カレンダフィールドの値を、カレンダに設定されている新しい時間と同期させることができます。時間は最初に再計算されません。時間、フィールドの順に再計算するには、complete() メソッドを呼び出します。computeTime()public final Date getTime()
Date。setTime(Date), getTimeInMillis()public final void setTime(Date date)
Date に設定します。
注:Date(Long.MAX_VALUE) または Date(Long.MIN_VALUE) で setTime() を呼び出すと、get() から不正確なフィールド値が生じることがあります。
date - 指定された Date。getTime(), setTimeInMillis(long)public long getTimeInMillis()
getTime(), setTimeInMillis(long)public void setTimeInMillis(long millis)
millis - 元期からの UTC ミリ秒値で表される新しい時間。setTime(Date), getTimeInMillis()public int get(int field)
complete() メソッドにより処理されます。この処理は、カレンダシステムにより異なります。field - 指定されたカレンダフィールド。ArrayIndexOutOfBoundsException - 指定されたフィールドが範囲外の場合 (field < 0 || field >= FIELD_COUNT)。set(int,int), complete()protected final int internalGet(int field)
field - 指定されたカレンダフィールド。get(int)public void set(int field,
int value)
field - 指定されたカレンダフィールド。value - 指定されたカレンダフィールドに設定する値。ArrayIndexOutOfBoundsException - 厳密性モードで、指定されたフィールドが範囲外の場合 (field < 0 || field >= FIELD_COUNT)。set(int,int,int), set(int,int,int,int,int), set(int,int,int,int,int,int), get(int)public final void set(int year,
int month,
int date)
YEAR、MONTH、および DAY_OF_MONTH の値を設定します。ほかのカレンダフィールドの以前の値は保持されます。保持されないようにする場合は、最初に clear() を呼び出します。year - YEAR カレンダフィールドの設定に使用する値。month - MONTH カレンダフィールドの設定に使用する値。Month 値は 0 から始まる (1 月は 0 になる)。date - DAY_OF_MONTH カレンダフィールドの設定に使用する値。set(int,int), set(int,int,int,int,int), set(int,int,int,int,int,int)public final void set(int year,
int month,
int date,
int hourOfDay,
int minute)
YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、および MINUTE の値を設定します。ほかのフィールドの以前の値は保持されます。保持されないようにする場合は、最初に clear() を呼び出します。year - YEAR カレンダフィールドの設定に使用する値。month - MONTH カレンダフィールドの設定に使用する値。Month 値は 0 から始まる (1 月は 0 になる)。date - DAY_OF_MONTH カレンダフィールドの設定に使用する値。hourOfDay - HOUR_OF_DAY カレンダフィールドの設定に使用する値。minute - MINUTE カレンダフィールドの設定に使用する値。set(int,int), set(int,int,int), set(int,int,int,int,int,int)public final void set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second)
YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、および SECOND の値を設定します。ほかのフィールドの以前の値は保持されます。保持されないようにする場合は、最初に clear() を呼び出します。year - YEAR カレンダフィールドの設定に使用する値。month - MONTH カレンダフィールドの設定に使用する値。Month 値は 0 から始まる (1 月は 0 になる)。date - DAY_OF_MONTH カレンダフィールドの設定に使用する値。hourOfDay - HOUR_OF_DAY カレンダフィールドの設定に使用する値。minute - MINUTE カレンダフィールドの設定に使用する値。second - SECOND カレンダフィールドの設定に使用する値。set(int,int), set(int,int,int), set(int,int,int,int,int)public final void clear()
Calendar のすべてのカレンダフィールド値および時間値 (元期からのミリ秒単位のオフセット) を未定義に設定します。これは、isSet() がすべてのカレンダフィールドで false を返し、日付および時間計算でフィールドがこれまで設定されたことがないかのように処理されることを意味します。Calendar 実装クラスは、固有のデフォルトフィールド値を日付/時間計算に使用できます。たとえば、YEAR フィールド値が未定義の場合、GregorianCalendar は 1970 を使用します。clear(int)public final void clear(int field)
Calendar の指定されたカレンダフィールド値および時間値 (元期からのミリ秒単位のオフセット) を未定義に設定します。これは、isSet(field) が false を返すこと、および日付と時間計算でフィールドがこれまで設定されたことがないかのように処理されることを意味します。Calendar 実装クラスは、日付および時間計算にフィールド固有のデフォルト値を使用できます。
HOUR_OF_DAY、HOUR、および AM_PM フィールドはそれぞれ別個に処理され、時間の解決規則が適用されます。フィールドのいずれかをクリアしても、この Calendar の「時」はリセットされません。「時」の値をリセットするには、set(Calendar.HOUR_OF_DAY, 0) を使用します。
field - クリアするカレンダフィールド。clear()public final boolean isSet(int field)
get メソッド呼び出しでトリガーされる内部フィールド計算によって値が設定された場合を含む)。true、そうでない場合は false。public String getDisplayName(int field, int style, Locale locale)
style と locale のカレンダ field 値の文字列表現を返します。適用できる文字列表現がない場合は、null が返されます。このメソッドは、文字列表現が指定されたカレンダ field に適用可能な場合に、get(field) を呼び出してカレンダ field 値を取得します。
たとえば、この Calendar が GregorianCalendar であり、その日付が 2005-01-01 の場合、MONTH フィールドの文字列表現は、英語ロケールの長いスタイルでは「January」になり、短いスタイルでは「Jan」になります。ただし、DAY_OF_MONTH フィールドでは文字列表現を使用できず、このメソッドは null を返します。
デフォルトの実装は、DateFormatSymbols に特定の locale の名前が含まれるカレンダフィールドをサポートします。
field - 文字列表現が返されるカレンダフィールドstyle - 文字列表現に適用されるスタイル。SHORT と LONG のいずれか。locale - 文字列表現のロケールstyle の指定された field の文字列表現。適用できる文字列表現がない場合は、null。IllegalArgumentException - field または style が無効な場合、あるいはこの Calendar が厳密モードで、カレンダフィールドのいずれかに無効な値が含まれている場合NullPointerException - locale が null である場合public Map<String,Integer> getDisplayNames(int field, int style, Locale locale)
style および locale のカレンダ field のすべての名前と、それに対応するフィールド値を含む Map を返します。たとえば、この Calendar が GregorianCalendar の場合、返されるマップには、英語ロケールの短いスタイルでは、JANUARY に対する「Jan」、FEBRUARY に対する「Feb」などが含まれます。
その他のカレンダフィールドの値が、表示名のセットを決定するときに考慮されることがあります。たとえば、この Calendar が太陰太陽暦システムであり、YEAR フィールドによって指定される年の値にうるう月がある場合、このメソッドはうるう月の名前を含む月の名前を返し、月の名前はその年に固有の値にマップされます。
デフォルト実装は、DateFormatSymbols に含まれる表示名をサポートします。たとえば、field が MONTH で style が ALL_STYLES の場合、このメソッドは、DateFormatSymbols.getShortMonths() および DateFormatSymbols.getMonths() によって返されるすべての文字列を含む Map を返します。
field - 表示名が返されるカレンダフィールドstyle - 表示名に適用されるスタイル。SHORT、LONG、ALL_STYLES のいずれか。locale - 表示名のロケールstyle と locale のすべての表示名とそれらのフィールド値を含む Map。field に表示名が定義されていない場合は、nullIllegalArgumentException - field または style が無効な場合、あるいはこの Calendar が厳密モードで、カレンダフィールドのいずれかに無効な値が含まれている場合NullPointerException - locale が null である場合protected void complete()
computeTime() メソッドが呼び出されます。次に、computeFields() メソッドが呼び出されて、すべてのカレンダフィールド値が計算されます。public boolean equals(Object obj)
Calendar を指定された Object と比較します。引数が、このオブジェクトと同じ Calendar パラメータの同じ時間値 (元期からのミリ秒単位のオフセット) を表す同じカレンダシステムの Calendar オブジェクトである場合にのみ、結果は true になります。
Calendar パラメータは、isLenient、getFirstDayOfWeek、getMinimalDaysInFirstWeek、および getTimeZone メソッドにより表現される値です。2 つの Calendar 間のパラメータに相違がある場合、このメソッドは false を返します。
時間値だけを比較する場合は、compareTo メソッドを使用します。
equals、クラス: Objectobj - 比較対象のオブジェクト。obj に等しい場合は true。それ以外の場合は false。Object.hashCode(), HashMappublic int hashCode()
hashCode、クラス: ObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean before(Object when)
Calendar が、指定された Object の表す時間より前の時間を表すかどうかを返します。このメソッドは、次と同等です。
等価になるのは、compareTo(when) < 0
when が Calendar インスタンスである場合だけです。それ以外の場合、このメソッドは false を返します。when - 比較対象の ObjectCalendar の時間が when で表される時間よりも前の場合は true、そうでない場合は false。compareTo(Calendar)public boolean after(Object when)
Calendar が、指定された Object の表す時間よりあとの時間を表すかどうかを返します。このメソッドは、次と同等です。
等価になるのは、compareTo(when) > 0
when が Calendar インスタンスである場合だけです。それ以外の場合、このメソッドは false を返します。when - 比較対象の ObjectCalendar の時間が when で表される時間よりもあとの場合は true、そうでない場合は false。compareTo(Calendar)public int compareTo(Calendar anotherCalendar)
Calendar オブジェクトで表される時間値 (元期からのミリ秒単位のオフセット) を比較します。compareTo、インタフェース: Comparable<Calendar>anotherCalendar - 比較対象の Calendar。Calendar の表す時間と等しい場合の値は 0。この Calendar の時間が引数で表される時間より前の場合は 0 未満の値。この Calendar の時間が引数で表される時間よりあとの場合は、0 より大きい値。NullPointerException - 指定された Calendar が null である場合。IllegalArgumentException - カレンダ値が無効なため、指定された Calendar オブジェクトの時間値を取得できない場合。public abstract void add(int field,
int amount)
add(Calendar.DAY_OF_MONTH, -5).
field - カレンダフィールド。amount - フィールドに追加される日付または時間の量。roll(int,int), set(int,int)public abstract void roll(int field,
boolean up)
roll(Calendar.DATE, true)。年または Calendar.YEAR フィールドを動かすと、年の値は、1 と getMaximum(Calendar.YEAR) で返される値の範囲の年に変わります。月または Calendar.MONTH フィールドを動かすと、日付などのほかのフィールドが矛盾を起こす場合があるので、その場合はそれらのフィールドを変更する必要があります。たとえば、日付 01/31/96 の月を動かすと、結果は 02/29/96 となります。日の時間または Calendar.HOUR_OF_DAY フィールドを動かすと、時の値は、0 と 23 の範囲の値 (ゼロベース) に変わります。
field - 時間フィールド。up - 指定された時間フィールドの値を上へ動かすのか、下へ動かすのかを指定する。上へ動かす場合は true、そうでない場合は false を使用する。add(int,int), set(int,int)public void roll(int field,
int amount)
注:Calendar に対するこのデフォルト実装は、一単位だけローリングする roll() のバージョンを繰り返し呼び出します。これは常に適切に動作するとは限りません。たとえば、DAY_OF_MONTH フィールドが 31 の場合、2 月をローリングすると、そのフィールドを 28 に設定したままにします。この機能の GregorianCalendar バージョンはこの問題に対応しています。ほかのサブクラスではこの機能のオーバーライドも提供する必要があり、これは適切な動作です。
field - カレンダフィールド。amount - カレンダ field に追加する指定された量。roll(int,boolean), add(int,int), set(int,int)public void setTimeZone(TimeZone value)
value - 指定されたタイムゾーン。public TimeZone getTimeZone()
public void setLenient(boolean lenient)
lenient - 非厳密モードがオンの場合は true、そうでない場合は false。isLenient(), DateFormat.setLenient(boolean)public boolean isLenient()
true、そうでない場合は false。setLenient(boolean)public void setFirstDayOfWeek(int value)
SUNDAY、フランスでは MONDAY です。value - 指定された週の最初の日。getFirstDayOfWeek(), getMinimalDaysInFirstWeek()public int getFirstDayOfWeek()
SUNDAY、フランスでは MONDAY です。setFirstDayOfWeek(int), getMinimalDaysInFirstWeek()public void setMinimalDaysInFirstWeek(int value)
value - 年の最初の週に必要な指定された最小日数。getMinimalDaysInFirstWeek()public int getMinimalDaysInFirstWeek()
setMinimalDaysInFirstWeek(int)public boolean isWeekDateSupported()
Calendar が暦週日付をサポートしているかどうかを返します。
このメソッドのデフォルト実装は false を返します。
Calendar が暦週日付をサポートする場合は true を返し、そうでない場合は false を返します。getWeekYear(), setWeekDate(int,int,int), getWeeksInWeekYear()public int getWeekYear()
Calendar で表される暦週の基準年を返します。暦週の基準年は、週のサイクルと同期がとられます。最初の週の最初の日は、暦週の基準年の最初の日になります。
このメソッドのデフォルト実装は UnsupportedOperationException をスローします。
Calendar の暦週の基準年UnsupportedOperationException - 暦週の基準年の番号付けがこの Calendar でサポートされていない場合。isWeekDateSupported(), getFirstDayOfWeek(), getMinimalDaysInFirstWeek()public void setWeekDate(int weekYear,
int weekOfYear,
int dayOfWeek)
Calendar の日付を指定された日付指示子 - 暦週の基準年、年の何週目かを表す値、および曜日で設定します。
set メソッドと異なり、すべてのカレンダフィールドおよび time の値は返された時点で計算されます。
weekOfYear が weekYear 内の有効な週番号の範囲外である場合は、weekYear および weekOfYear 値が非厳密モードで調整されるか、IllegalArgumentException が厳密モードでスローされます。
このメソッドのデフォルト実装は UnsupportedOperationException をスローします。
weekYear - 暦週の基準年weekOfYear - weekYear に基づく週番号dayOfWeek - 曜日の値。DAY_OF_WEEK フィールドの定数 (SUNDAY、...、SATURDAY) の 1 つ。IllegalArgumentException - 厳密モードで、指定されたいずれかの日付指定子が無効であるか、いずれかのカレンダフィールドが、指定された日付指定子と矛盾している場合UnsupportedOperationException - 暦週の基準年の番号付けがこの Calendar でサポートされていない場合。isWeekDateSupported(), getFirstDayOfWeek(), getMinimalDaysInFirstWeek()public int getWeeksInWeekYear()
Calendar で表される暦週の基準年に含まれる週数を返します。
このメソッドのデフォルト実装は UnsupportedOperationException をスローします。
UnsupportedOperationException - 暦週の基準年の番号付けがこの Calendar でサポートされていない場合。WEEK_OF_YEAR, isWeekDateSupported(), getWeekYear(), getActualMaximum(int)public abstract int getMinimum(int field)
Calendar インスタンスで指定されたカレンダフィールドの最小値を返します。最小値は、すべての可能な時間値に対して get メソッドで返された最小値として定義されます。最小値は、インスタンスの特定のパラメータを持つそれぞれのカレンダシステムによって異なります。field - カレンダフィールド。getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public abstract int getMaximum(int field)
Calendar インスタンスで指定されたカレンダフィールドの最大値を返します。最大値は、すべての可能な時間値に対して get メソッドで返された最大値として定義されます。最大値は、インスタンスの特定のパラメータを持つそれぞれのカレンダシステムによって異なります。field - カレンダフィールド。getMinimum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public abstract int getGreatestMinimum(int field)
Calendar インスタンスで指定されたカレンダフィールドの最大最小値を返します。最大最小値は、すべての可能な時間値に対して getActualMinimum(int) メソッドで返された最大値として定義されます。最大最小値は、インスタンスの特定のパラメータを持つそれぞれのカレンダシステムによって異なります。field - カレンダフィールド。getMinimum(int), getMaximum(int), getLeastMaximum(int), getActualMinimum(int), getActualMaximum(int)public abstract int getLeastMaximum(int field)
Calendar インスタンスで指定されたカレンダフィールドの最小最大値を返します。最小最大値は、すべての可能な時間値に対して getActualMaximum(int) メソッドで返された最小値として定義されます。最小最大値は、インスタンスの特定のパラメータを持つそれぞれのカレンダシステムによって異なります。たとえば、グレゴリオ暦のシステムの Calendar では、DAY_OF_MONTH フィールドに 28 が返されます。これは、このカレンダでは日数がもっとも少ない月の最後の日が、平年の 2 月の 28 番目の日であるためです。field - カレンダフィールド。getMinimum(int), getMaximum(int), getGreatestMinimum(int), getActualMinimum(int), getActualMaximum(int)public int getActualMinimum(int field)
Calendar に時間値を指定した、指定のカレンダフィールドが取り得る最小値を返します。
このメソッドのデフォルトの実装では、カレンダフィールドの実際の最小値を決定するために反復アルゴリズムを使用します。可能な場合はサブクラスがこれをより効率的な実装でオーバーライドします。多くの場合、実際には単に getMinimum() が返されることによってオーバーライドされます。
field - カレンダフィールドCalendar の時間値に対する、指定されたカレンダフィールドの最小値getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMaximum(int)public int getActualMaximum(int field)
Calendar に時間値を指定して、指定のカレンダフィールドが取り得る最大値を返します。たとえば、MONTH フィールドの実際の最大値は、ある年では 12 になり、ヘブライ暦システムの場合の別の年では 13 になります。
このメソッドのデフォルトの実装では、カレンダフィールドの実際の最大値を決定するために反復アルゴリズムを使用します。可能な場合はサブクラスがこれをより効率的な実装でオーバーライドします。
field - カレンダフィールドCalendar の時間値に対する、指定されたカレンダフィールドの最大値getMinimum(int), getMaximum(int), getGreatestMinimum(int), getLeastMaximum(int), getActualMinimum(int)public Object clone()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.