Calendar クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Calendar クラスは抽象クラスで、特定のインスタント イン タイムと、#fields calendar fields、YEAR、MONTH、DAY_OF_MONTHなどの一連のHOURを変換したり、次の週の日付を取得するなどカレンダー フィールドを操作したりするためのメソッドを提供します。
[Android.Runtime.Register("java/util/Calendar", DoNotGenerateAcw=true)]
public abstract class Calendar : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Lang.IComparable
[<Android.Runtime.Register("java/util/Calendar", DoNotGenerateAcw=true)>]
type Calendar = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IComparable
- 継承
- 派生
- 属性
- 実装
注釈
Calendar クラスは抽象クラスで、特定のインスタント イン タイムと、#fields calendar fields、YEAR、MONTH、DAY_OF_MONTHなどの一連のHOURを変換したり、次の週の日付を取得するなどカレンダー フィールドを操作したりするためのメソッドを提供します。 時間の一瞬は、"Epoch"><em>Epoch</em>、 1970 年 1 月 1 日 00:00:00.000 GMT (グレゴリオ暦) からのオフセットであるミリ秒の値で表すことができます。
このクラスには、パッケージの外部に具象カレンダー システムを実装するための追加のフィールドとメソッドも用意されています。 これらのフィールドとメソッドは、 protectedとして定義されます。
他のロケール依存クラスと同様に、 Calendar は、この型の一般的に有用なオブジェクトを取得するためのクラス メソッド ( getInstance) を提供します。
Calendar's getInstance メソッドは、カレンダー フィールドが現在の日時で初期化された Calendar オブジェクトを返します: <blockquote>
Calendar rightNow = Calendar.getInstance();
</blockquote>
Calendar オブジェクトは、特定の言語とカレンダー スタイル (日本語グレゴリオ暦、Japanese-Traditionalなど) の日付と時刻の書式設定を実装するために必要なすべてのカレンダー フィールド値を生成できます。
Calendar は、特定のカレンダー フィールドによって返される値の範囲とその意味を定義します。 たとえば、カレンダー システムの最初の月には、すべての予定表の値 MONTH == JANUARY があります。 その他の値は、 ERAなど、具象サブクラスによって定義されます。 詳細については、個々のフィールドのドキュメントとサブクラスのドキュメントを参照してください。
<h2> 予定表フィールド値の取得と設定</h2>
カレンダー フィールドの値は、 set メソッドを呼び出すことによって設定できます。
Calendarで設定されたフィールド値は、時間値 (エポックからのミリ秒) またはカレンダー フィールドの値を計算する必要があるまで解釈されません。
get、getTimeInMillis、getTime、add、rollの呼び出しには、このような計算が含まれます。
<h3>Leniency</h3>
Calendar には、カレンダー フィールドを解釈するための 2 つのモード ( <em>lenient</em> と <em>non-lenient</em> があります。
Calendarが緩いモードの場合、生成されるよりも広い範囲の予定表フィールド値を受け入れます。
Calendarがget()返される予定表フィールドの値を再計算すると、すべての予定表フィールドが正規化されます。 たとえば、寛大な GregorianCalendar は、 MONTH == JANUARYを 2 月 1 日として DAY_OF_MONTH == 32 解釈します。
Calendarが非寛大モードの場合、カレンダー フィールドに不整合がある場合は例外がスローされます。 たとえば、 GregorianCalendar では、常に 1 から月の長さの DAY_OF_MONTH 値が生成されます。 時間フィールド値またはカレンダー フィールド値が設定されている場合、非 GregorianCalendar は例外をスローします。
<h3>"first_week">最初の週</h3>
Calendar は、2 つのパラメーターを使用してロケール固有の 7 日間の週を定義します。週の最初の日と最初の週の最小日数 (1 から 7)。 これらの数値は、 Calendar が構築されるときに、ロケール リソース データまたはロケール自体から取得されます。 指定されたロケールに "fw" Unicode 拡張機能が含まれている場合は、それらの拡張機能に従って週の最初の日が取得されます。 値を設定するメソッドを使用して明示的に指定することもできます。
WEEK_OF_MONTHまたはWEEK_OF_YEARフィールドを設定または取得する場合、Calendarは、月または年の最初の週を参照ポイントとして決定する必要があります。 月または年の最初の週は、 getFirstDayOfWeek() から始まり、その月または年の少なくとも getMinimalDaysInFirstWeek() 日を含む最も早い 7 日間として定義されます。 週番号 ..., -1, 0 は最初の週より前です。週番号は 2、3 です,...それに従ってください。
get()によって返される正規化された番号は異なる場合があることに注意してください。 たとえば、特定の Calendar サブクラスは、1 年の第 1 週の前の週を前年の週 <i>n</i> として指定できます。
<h3>Calendar フィールドの解決</h3>
カレンダー フィールドから日付と時刻を計算する場合、計算に不十分な情報 (月の日のない年と月のみなど) があるか、一貫性のない情報が存在する可能性があります (たとえば、1996 年 7 月 15 日 (グレゴリオ暦) -- 1996 年 7 月 15 日は実際には月曜日です)。
Calendar では、カレンダー フィールドの値が解決され、次の方法で日付と時刻が決定されます。
"resolution">カレンダー フィールドの値に競合がある場合、 <c>Calendar</c> は、最近設定された予定表フィールドの優先順位を示します。 カレンダー フィールドの既定の組み合わせを次に示します。 最後に設定された 1 つのフィールドによって決定される最新の組み合わせが使用されます。
"date_resolution">日付フィールドの場合: <blockquote>
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
</blockquote>
"time_resolution">時刻フィールドの場合: <blockquote>
HOUR_OF_DAY
AM_PM + HOUR
</blockquote>
選択したフィールドの組み合わせに値が設定されていないカレンダー フィールドがある場合、 Calendar は既定値を使用します。 各フィールドの既定値は、具体的なカレンダー システムによって異なる場合があります。 たとえば、 GregorianCalendarでは、フィールドの既定値はエポックの開始時と同じです。つまり、 YEAR = 1970、 MONTH = JANUARY、 DAY_OF_MONTH = 1などです。
<strong>Note:</strong> 特定の単一時刻の解釈には、特定のあいまいさが考えられます。これは、次の方法で解決されます。 <ol><li> 23:59 は 1 日の最後の分、00:00 は翌日の最初の分です。 したがって、1999年12月31日23:59 >2000年1月1日00:00 >2000 年 1 月 1 日 00:01。
<li> 歴史的には正確ではありませんが、午前 0 時も "am" に属し、正午は "pm" に属しているため、同じ日の午前 12 時 (午前 0 時) > 午後 12 時 11 分、午後 12 時 00 分 > 午後 12:01 </ol>
日付または時刻の書式指定文字列は、実行時にユーザーが変更またはオーバーライドできる必要があるため、カレンダーの定義の一部ではありません。
DateFormatを使用して日付を書式設定します。
<h3>Field Manipulation</h3>
予定表フィールドは、 set()、 add()、 roll()の 3 つの方法を使用して変更できます。
<strong>set(f, value)</strong> カレンダー フィールドの f が valueに変更されます。 さらに、カレンダー フィールド f が変更されたことを示す内部メンバー変数を設定します。 カレンダー フィールド f はすぐに変更されますが、 get()、 getTime()、 getTimeInMillis()、 add()、または roll() の次回の呼び出しが行われるまで、カレンダーの時間値 (ミリ秒) は再計算されません。 したがって、 set() に対する複数の呼び出しでは、複数の不要な計算はトリガーされません。
set()を使用して予定表フィールドを変更した結果、予定表フィールド、予定表フィールドの値、カレンダー システムによっては、他の予定表フィールドも変更される可能性があります。 さらに、get(f)は、カレンダー フィールドが再計算された後、value メソッドの呼び出しによって設定されたsetを必ずしも返すわけではありません。 詳細は、具象カレンダー クラスによって決定されます。
<em>Example</em>: 最初に 1999 年 8 月 31 日に設定された GregorianCalendar について考えてみます。 通話 set(Calendar.MONTH, Calendar.SEPTEMBER) は、日付を 1999 年 9 月 31 日に設定します。 これは、 getTime() が呼び出された場合、1999 年 10 月 1 日に解決される一時的な内部表現です。 ただし、set(Calendar.DAY_OF_MONTH, 30)の呼び出しの前にgetTime()を呼び出すと、1999 年 9 月 30 日に日付が設定されます。これは、set()それ自体の後に再計算が行われないためです。
<strong>add(f, delta)</strong> はフィールド deltaにfを追加します。 これは、次の 2 つの調整を使用して set(f, get(f) + delta) を呼び出すことと同じです。
<blockquote>
<strong>ルール 1</strong> を追加します。 呼び出し後にfフィールドの値から、呼び出しがfされる前のフィールド deltaの値を引いた値。フィールド fで発生したすべてのオーバーフローを剰余します。 オーバーフローは、フィールド値がその範囲を超えた場合に発生し、その結果、次に大きいフィールドがインクリメントまたはデクリメントされ、フィールド値がその範囲に調整されます。
<strong>ルール 2</strong> を追加します。 より小さいフィールドが不変であると予想されるが、フィールド f が変更された後の最小値または最大値の変更、またはタイム ゾーン オフセットの変更などの他の制約により、以前の値と等しくなることができない場合、その値は、予想される値にできるだけ近くなるように調整されます。 フィールドが小さいと、時間の単位が小さくなります。
HOUR は、 DAY_OF_MONTHよりも小さいフィールドです。 不変であるとは予想されない小さいフィールドに対して調整は行われません。 カレンダー システムは、不変と予想されるフィールドを決定します。
</blockquote>
さらに、 set()とは異なり、 add() はカレンダーのミリ秒とすべてのフィールドの即時再計算を強制します。
<em>Example</em>: 最初に 1999 年 8 月 31 日に設定された GregorianCalendar について考えてみます。
add(Calendar.MONTH, 13)を呼び出すと、カレンダーが 2000 年 9 月 30 日に設定されます。
<strong>ルール 1</strong> を追加すると、 MONTH フィールドが 9 月に設定されます。13 か月を 8 月に追加すると、次の年の 9 月が与えられます。
DAY_OF_MONTH
GregorianCalendarでは 9 月に 31 にすることはできません。そのため、<strong>追加規則 2</strong> はDAY_OF_MONTHを 30 (可能な限り最も近い値) に設定します。 小さいフィールドですが、 DAY_OF_WEEK はルール 2 では調整されません。これは、 GregorianCalendarで月が変わると変更される可能性があるためです。
<strong>roll(f, delta)</strong> では、大きなフィールドを変更せずにフィールド deltaにfが追加されます。 これは、次の調整で add(f, delta) を呼び出すことと同じです。
<blockquote>
<strong>Roll rule</strong>。 大きいフィールドは、呼び出し後も変更されません。 フィールドが大きいほど、時間の単位が大きくなります。
DAY_OF_MONTH は、 HOURよりも大きいフィールドです。
</blockquote>
<em>Example</em>: java.util.GregorianCalendar#roll(int, int)を参照してください。
<strong>Usage モデル</strong>。
add()とroll()の動作を動機付けるために、月、日、年のインクリメント ボタンとデクリメント ボタンを持つユーザー インターフェイス コンポーネントと、基になるGregorianCalendarを検討します。 インターフェイスが 1999 年 1 月 31 日を読み取り、ユーザーが月単位のボタンを押した場合、何を読む必要がありますか? 基になる実装で set() を使用している場合は、1999 年 3 月 3 日を読み取る可能性があります。 より良い結果は、1999 年 2 月 28 日になります。 さらに、ユーザーがもう一度月単位のボタンを押した場合は、1999 年 3 月 28 日ではなく、1999 年 3 月 31 日を読み取る必要があります。 元の日付を保存し、 add() または roll()を使用することで、大きなフィールドに影響を与える必要があるかどうかに応じて、ほとんどのユーザーが直感的に期待するようにユーザー インターフェイスを動作させることができます。
1.1 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| Calendar() |
既定のタイム ゾーンと既定の |
| Calendar(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
| Calendar(TimeZone, Locale) |
指定したタイム ゾーンとロケールを持つカレンダーを構築します。 |
フィールド
| 名前 | 説明 |
|---|---|
| AllStyles |
古い.
"January" や "Jan" など、すべてのスタイルの名前を示す |
| Am |
午前 0 時から正午直前までの 1 日の期間を示す |
| AmPm |
古い.
|
| April |
グレゴリオ暦とユリウス暦の年の 4 か月目を示す |
| August |
グレゴリオ暦とユリウス暦の年の 8 か月目を示す |
| Date |
古い.
月の日を示す |
| DayOfMonth |
古い.
月の日を示す |
| DayOfWeek |
古い.
曜日を示す |
| DayOfWeekInMonth |
古い.
|
| DayOfYear |
古い.
|
| December |
グレゴリオ暦とユリウス暦の年の 12 か月目を示す |
| DstOffset |
古い.
夏時間オフセットをミリ秒単位で示す |
| Era |
古い.
年号を示す |
| February |
グレゴリオ暦とユリウス暦の年の 2 か月目を示す |
| FieldCount |
|
| Friday |
金曜日を示す |
| Hour |
古い.
午前または午後の時間を示す |
| HourOfDay |
古い.
|
| January |
グレゴリオ暦とユリウス暦の年の最初の月を示す |
| July |
グレゴリオ暦とユリウス暦の年の 7 か月目を示す |
| June |
グレゴリオ暦とユリウス暦の年の 6 か月目を示す |
| Long |
古い.
|
| LongFormat |
形式に使用される長い名前を示す |
| LongStandalone |
カレンダー ヘッダーとして月名など、個別に使用される長い名前を示す |
| March |
グレゴリオ暦とユリウス暦の年の 3 か月目を示す |
| May |
グレゴリオ暦とユリウス暦の年の 5 か月目を示す |
| Millisecond |
古い.
|
| Minute |
古い.
|
| Monday |
月曜日を示す |
| Month |
古い.
月を示す |
| NarrowFormat |
書式に使用される狭い名前を示す |
| NarrowStandalone |
狭い名前を個別に示す |
| November |
グレゴリオ暦とユリウス暦の年の 11 か月目を示す |
| October |
グレゴリオ暦とユリウス暦の年の 10 月を示す |
| Pm |
正午から午前 0 時直前までの 1 日の期間を示す |
| Saturday |
土曜日を示す |
| Second |
古い.
1 分以内の 2 番目を示す |
| September |
グレゴリオ暦とユリウス暦の年の 9 か月目を示す |
| Short |
古い.
|
| ShortFormat |
書式に使用される短い名前を示す |
| ShortStandalone |
カレンダー ヘッダーとして月の省略形など、個別に使用される短い名前を示す |
| Sunday |
日曜日を示す |
| Thursday |
木曜日を示す |
| Tuesday |
火曜日を示す |
| Undecimber |
年の 13 か月目を示す |
| Wednesday |
水曜日を示す |
| WeekOfMonth |
古い.
|
| WeekOfYear |
古い.
|
| Year |
古い.
年を示す |
| ZoneOffset |
古い.
GMT からの生オフセットをミリ秒単位で示す |
プロパティ
| 名前 | 説明 |
|---|---|
| AreFieldsSet |
true |
| AvailableCalendarTypes |
ランタイム環境で |
| CalendarType |
この |
| Class |
この |
| Fields |
この予定表の現在設定されている時刻の予定表フィールドの値。 |
| FirstDayOfWeek |
週の最初の日を取得します。e. |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| Instance |
既定のタイム ゾーンとロケールを使用して予定表を取得します。 |
| IsTimeSet |
true の場合、 |
| IsWeekDateSupported |
この |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Lenient |
日付/時刻の解釈を緩めるかどうかを示します。 |
| MinimalDaysInFirstWeek |
年の最初の週に必要な最小日数を取得します。e. |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| Time |
この |
| TimeInMillis |
このカレンダーの時間値をミリ秒単位で返します。 |
| TimeZone |
タイム ゾーンを取得します。 または、指定されたタイム ゾーン値を使用してタイム ゾーンを設定します。 |
| WeeksInWeekYear |
この |
| WeekYear |
この |
メソッド
| 名前 | 説明 |
|---|---|
| Add(CalendarField, Int32) |
カレンダーのルールに基づいて、指定した予定表フィールドに指定した時間を加算または減算します。 |
| After(Object) |
この |
| Before(Object) |
この |
| Clear() |
この>のカレンダー フィールドのすべての値と時間値 ("#Epoch" |
| Clear(CalendarField) |
指定されたカレンダー フィールドの値と、この>の時間値 ("#Epoch" |
| Clone() |
このオブジェクトのコピーを作成して返します。 |
| CompareTo(Calendar) |
2 つの> オブジェクトで表される時間値 ("#Epoch" |
| Complete() |
予定表フィールドの未設定のフィールドに入力します。 |
| ComputeFields() |
現在のミリ秒の時間値 |
| ComputeTime() |
|
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| Get(CalendarField) |
指定されたカレンダー フィールドの値を返します。 |
| GetActualMaximum(CalendarField) |
この |
| GetActualMinimum(CalendarField) |
この |
| GetAvailableLocales() |
このクラスの |
| GetDisplayName(Int32, Int32, Locale) |
指定した |
| GetDisplayNames(Int32, Int32, Locale) |
指定した |
| GetGreatestMinimum(CalendarField) |
この |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetInstance(Locale) |
既定のタイム ゾーンと指定されたロケールを使用して予定表を取得します。 |
| GetInstance(TimeZone, Locale) |
指定したタイム ゾーンとロケールを持つカレンダーを取得します。 |
| GetInstance(TimeZone) |
指定したタイム ゾーンと既定のロケールを使用してカレンダーを取得します。 |
| GetLeastMaximum(CalendarField) |
この |
| GetMaximum(CalendarField) |
この |
| GetMinimum(CalendarField) |
この |
| InternalGet(Int32) |
指定されたカレンダー フィールドの値を返します。 |
| IsSet(CalendarField) |
|
| JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| Roll(CalendarField, Boolean) |
大きなフィールドを変更せずに、指定された時刻フィールドに対して 1 つの時間単位を加算または減算 (上/下) します。 |
| Roll(CalendarField, Int32) |
大きなフィールドを変更せずに、指定した (符号付き) 量を指定したカレンダー フィールドに追加します。 |
| Set(CalendarField, Int32) |
指定されたカレンダー フィールドを指定された値に設定します。 |
| Set(Int32, Int32, Int32, Int32, Int32, Int32) |
フィールド |
| Set(Int32, Int32, Int32, Int32, Int32) |
予定表フィールドの |
| Set(Int32, Int32, Int32) |
予定表フィールドの |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| SetWeekDate(Int32, Int32, Int32) |
この |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToInstant() |
|
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IComparable.CompareTo(Object) |
|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|