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