GregorianCalendar 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
GregorianCalendar 是 的 Calendar 一個具體子類,並提供世界大多數地區使用的標準曆法系統。
[Android.Runtime.Register("java/util/GregorianCalendar", DoNotGenerateAcw=true)]
public class GregorianCalendar : Java.Util.Calendar
[<Android.Runtime.Register("java/util/GregorianCalendar", DoNotGenerateAcw=true)>]
type GregorianCalendar = class
inherit Calendar
- 繼承
- 屬性
備註
GregorianCalendar 是 的 Calendar 一個具體子類,並提供世界大多數地區使用的標準曆法系統。
GregorianCalendar 是一種混合曆法,同時支持儒略曆與格里曆系統,並支持單一不連續點,該斷裂默認對應格里曆實施日期(部分國家為1582年10月15日,其他國家則為後期)。 呼叫者可透過呼叫 #setGregorianChange(Date) setGregorianChange()來更改切換日期。
歷史上,在那些最先採用格里曆的國家,1582年10月4日(儒略曆)之後是1582年10月15日(格里曆)。 這個曆法正確地模擬了這點。 在格里曆轉換前, GregorianCalendar 實施儒略曆。 格里曆與儒略曆唯一的差異是閏年規則。 儒略曆規定每四年有閏年,而格里曆則省略了無法被400整除的世紀年。
GregorianCalendar實作<>預言<曆/格>里曆與儒略曆。 也就是說,日期是透過無限推算現行規則,向過去和向前無限推算而得出。 因此, GregorianCalendar 可用於所有年份,以產生有意義且一致的結果。 然而,所取得 GregorianCalendar 的日期僅從西元4年3月1日開始,當時採用了現代儒略曆規則。 在此之前,閏年規則的適用不規則,且在公元前45年之前,儒略曆甚至不存在。
在格里曆實施之前,元旦是3月25日。 為避免混淆,這個曆法始終使用1月1日。 若需要,對於格里曆轉換前且介於1月1日至3月24日之間的日期,可手動調整。
<h2>“week_and_year”年度>週與週<年/h2>
計算出的 Calendar#WEEK_OF_YEAR WEEK_OF_YEAR 場數值範圍為1到53。 曆年的第一週是最早從該 Calendar#getFirstDayOfWeek() getFirstDayOfWeek() 年開始的七天期間,且至少包含 Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek() 該年的日子。 因此,它取決於 、 getMinimalDaysInFirstWeek()getFirstDayOfWeek()以及 1 月 1 日這一星期幾。 一年第一週與下一年第一週之間的週數(僅限於此)依序編號為2至52或53(Julian-Gregorian 轉換涉及的年份除外)。
getFirstDayOfWeek()在構建 getMinimalDaysInFirstWeek()時,與GregorianCalendar值會使用依地點依賴的資源初始化。 「iso8601_compatible_setting」>週數判定與 ISO 8601 標準相容,當 getFirstDayOfWeek() 為 且MONDAYgetMinimalDaysInFirstWeek()為 4,且該數值用於偏好該標準的地區。 這些值可透過呼叫 Calendar#setFirstDayOfWeek(int) setFirstDayOfWeek() 和 Calendar#setMinimalDaysInFirstWeek(int) setMinimalDaysInFirstWeek()明確設定。
「week_year><」週>的年份</em> 與週期 WEEK_OF_YEAR 同步。 第一週和最後一週之間的所有週(包含)的EM週<年值>都一樣<。> 因此,一週一年的第一天和最後一天可能有不同的曆年值。
例如,1998年1月1日是星期四。 若 getFirstDayOfWeek() 是 MONDAYgetMinimalDaysInFirstWeek() 且 為 4(ISO 8601 標準相容設定),則 1998 年第 1 週自 1997 年 12 月 29 日開始,至 1998 年 1 月 4 日結束。 1997年曆年最後三天的週年為1998年。 然而, getFirstDayOfWeek() 若 是 SUNDAY,則 1998 年第 1 週從 1998 年 1 月 4 日開始,至 1998 年 1 月 10 日結束;1998 年的前三天則屬於 1997 年的第 53 週,且其週年份為 1997 年。
<h3>月<之週/h3>
計算出的 WEEK_OF_MONTH 欄位數值範圍為0到6。 每月的第一週(包含 WEEK_OF_MONTH = 1的天)是該月中最早連續 getMinimalDaysInFirstWeek() 的連續天數,結束於前 getFirstDayOfWeek()一天。 與一年的第一週不同,一個月的第一週可能短於7天,不必從 getFirstDayOfWeek()開始,且不包含前一個月的天數。 第一週前的月份天數為 WEEK_OF_MONTH 0。
例如,若 getFirstDayOfWeek() 且 SUNDAYgetMinimalDaysInFirstWeek() 為 4,則 1998 年 1 月的第一週為 1 月 4 日星期日至 1 月 10 日星期六。 現在有1的比例 WEEK_OF_MONTH 。 1月1日星期四至1月3日星期六,A為 WEEK_OF_MONTH 0。 如果 getMinimalDaysInFirstWeek() 改為3,那麼1月1日至1月3日的A WEEK_OF_MONTH 值為1。
<h3>預設欄位值</h3>
此 clear 方法設定日曆欄位為未定義。
GregorianCalendar 如果日曆欄位的值未定義,則會使用以下預設值。
<table class=“striped” style=“text-align: left;寬度:66%;”><caption style=“display:none”GregorianCalendar> 預設欄位值</caption><thead><tr><th scope=“col”> 欄位 </th><th scope=“col”> 預設值 </th></thead><>< tbody><tr><th scope=“row”/>ERA<th td><>/AD<td/tr tr><th scope =“row”/th><td/th><tscope = “row”>YEAR</th><td>1970</結束></tr>tr th<>scope=「row」<>MONTH/th<>td<>JANUARY/td<>/tr<>tr<>th scope =「row」<>DAY_OF_MONTH/th<>td<>1/td<>/tr<>tr<>th scope =「row」/th td<>DAY_OF_WEEK/td/tr tr th scope = “row”<></th>the first day of weektd/td<>/tr<>tr th<>scope = “row”<>WEEK_OF_MONTH/th<>TD<>0/TD<>/TR<><TR><th 示波器=「行」>DAY_OF_WEEK_IN_MONTH</th><TD>1</TD/TR><>< tr><th 示波器=「行」>AM_PM</th><TD>AM</TD></TR><tr><th 望遠鏡=「行」>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND</th td><>/td0<></tr></tbody></表格 br><>預設值不適用於上述未列出的欄位。
<強烈>範例:</強烈><引用>
// 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 Saving 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
</區塊引用>
在 1.1 版本中加入。
Java 文件 java.util.GregorianCalendar。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| GregorianCalendar() |
利用預設時區的當前時間和預設 |
| GregorianCalendar(Int32, Int32, Int32, Int32, Int32, Int32) |
建立一個格里曆,預設時區與地點為指定日期與時間。 |
| GregorianCalendar(Int32, Int32, Int32, Int32, Int32) |
以預設時區和地點設定的日期和時間建構 a |
| GregorianCalendar(Int32, Int32, Int32) |
建構 |
| GregorianCalendar(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
| GregorianCalendar(Locale) |
根據預設時區及指定地點的當前時間構建 a |
| GregorianCalendar(TimeZone, Locale) |
根據指定時區及地點的當前時間構造 a |
| GregorianCalendar(TimeZone) |
根據指定時區的當前時間及預設 |
欄位
| 名稱 | Description |
|---|---|
| Ad |
田地的 |
| AllStyles |
已淘汰.
一個用 |
| Am |
場的值 |
| AmPm |
已淘汰.
欄位編號 |
| April |
該區域的數值 |
| August |
該區域的值 |
| Bc |
田面的值 |
| Date |
已淘汰.
欄位編號 |
| DayOfMonth |
已淘汰.
欄位編號 |
| DayOfWeek |
已淘汰.
欄位編號 |
| DayOfWeekInMonth |
已淘汰.
欄位編號 |
| DayOfYear |
已淘汰.
欄位編號 |
| December |
該格子的面值 |
| DstOffset |
已淘汰.
欄位編號 |
| Era |
已淘汰.
欄位編號 |
| February |
該區域的數值 |
| FieldCount |
由 和 |
| Friday |
欄位值 |
| Hour |
已淘汰.
欄位編號 |
| HourOfDay |
已淘汰.
欄位編號 |
| January |
格子的面值 |
| July |
該地的面值 |
| June |
格子的面值 |
| Long |
已淘汰.
一個 的 |
| LongFormat |
一個格式指定符, |
| LongStandalone |
一個風格指定符, |
| March |
該區域的面值 |
| May |
該區域的 |
| Millisecond |
已淘汰.
場號表示 |
| Minute |
已淘汰.
欄位編號 |
| Monday |
欄位值 |
| Month |
已淘汰.
欄位編號 |
| NarrowFormat |
一個格式 |
| NarrowStandalone |
一個獨立 |
| November |
該區域的面值 |
| October |
該區域的面值 |
| Pm |
田的價值 |
| Saturday |
場地價值 |
| Second |
已淘汰.
欄位編號表示 |
| September |
該田的面值 |
| Short |
已淘汰.
一個 的 |
| ShortFormat |
一個用於 |
| ShortStandalone |
一個風格指定符, |
| Sunday |
場地價值 |
| Thursday |
田地值 |
| Tuesday |
場地價值 |
| Undecimber |
田地的 |
| Wednesday |
田地值 |
| WeekOfMonth |
已淘汰.
欄位編號 |
| WeekOfYear |
已淘汰.
欄位編號 |
| Year |
已淘汰.
欄位編號 |
| ZoneOffset |
已淘汰.
欄位編號 |
屬性
| 名稱 | Description |
|---|---|
| AreFieldsSet |
如果 |
| CalendarType |
回傳此 |
| Class |
回傳此 |
| Fields |
此日曆欄位為目前設定的時間值。 (繼承來源 Calendar) |
| FirstDayOfWeek |
知道一週的第一天是什麼;e. (繼承來源 Calendar) |
| GregorianChange |
取得格里曆變更日期。 -或者- 設定 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsTimeSet |
若 則 為真,則 的 |
| IsWeekDateSupported |
標示此日期 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Lenient |
說明日期/時間的解釋是否應該寬鬆。 (繼承來源 Calendar) |
| MinimalDaysInFirstWeek |
了解學年第一週所需的最低天數;e. (繼承來源 Calendar) |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
| ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
| Time |
回傳 |
| TimeInMillis |
以毫秒為單位回傳此日曆的時間值。 (繼承來源 Calendar) |
| TimeZone |
會知道時區。 -或- 設定時區值為指定時區。 (繼承來源 Calendar) |
| WeeksInWeekYear |
回傳該週的週數,該年由 |
| WeekYear |
回傳由此 |
方法
| 名稱 | Description |
|---|---|
| Add(CalendarField, Int32) |
根據行事曆的規則,為指定(簽名)時間欄位加進。 |
| After(Object) |
回傳此是否 |
| Before(Object) |
回傳此 |
| Clear() |
設定所有日曆欄位值及時間值(與「#Epoch」>紀元相差的毫秒),該時間值為 |
| Clear(CalendarField) |
設定給定的曆法欄位值及時間>值(與「#Epoch」 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Calendar) |
| CompareTo(Calendar) |
比較兩個>物件所代表的時間值(與「#Epoch」 |
| Complete() |
填補日曆欄位中未設定的欄位。 (繼承來源 Calendar) |
| ComputeFields() |
將時間值(從紀元的毫秒偏移)轉換為日曆欄位值。 |
| ComputeTime() |
將日曆欄位值轉換為時間值(與紀元相差的毫秒)。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| From(ZonedDateTime) |
從物件 |
| Get(CalendarField) |
回傳給定曆法欄位的值。 (繼承來源 Calendar) |
| GetActualMaximum(CalendarField) |
回傳指定日曆欄位在時間值 |
| GetActualMinimum(CalendarField) |
回傳指定日曆欄位在時間值 |
| GetDisplayName(Int32, Int32, Locale) |
回傳給定 |
| GetDisplayNames(Int32, Int32, Locale) |
回傳包含給定 |
| GetGreatestMinimum(CalendarField) |
回傳該 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetLeastMaximum(CalendarField) |
回傳該 |
| GetMaximum(CalendarField) |
回傳該 |
| GetMinimum(CalendarField) |
回傳該 |
| InternalGet(Int32) |
回傳給定曆法欄位的值。 (繼承來源 Calendar) |
| IsLeapYear(Int32) |
判斷該年份是否為閏年。 |
| IsSet(CalendarField) |
判斷給定的日曆欄位是否有值設定,包括該值是由方法呼叫觸發 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Roll(CalendarField, Boolean) |
在指定時間場上加減一個單位時間,且不改變較大的場。 |
| Roll(CalendarField, Int32) |
將指定的(簽名)金額加入指定的日曆欄位,且不更改較大欄位。 (繼承來源 Calendar) |
| Set(CalendarField, Int32) |
將給定的曆法欄位設為給定值。 (繼承來源 Calendar) |
| 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) |
| ToZonedDateTime() |
將此物件 |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IComparable.CompareTo(Object) |
|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |