鴻蒙OS Calendar

2022-07-14 14:55 更新

Calendar

java.lang.Object

|---java.util.Calendar

public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>

Calendar 類是一個(gè)抽象類,它提供了在特定時(shí)刻和一組日歷字段(例如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等)之間進(jìn)行轉(zhuǎn)換的方法,以及用于操作日歷字段(例如獲取日期)的方法 下周的。 時(shí)間的瞬間可以用毫秒值表示,該值是從 1970 年 1 月 1 日 00:00:00.000 GMT(格里高利)紀(jì)元的偏移量。

該類還提供了用于在包外實(shí)現(xiàn)具體日歷系統(tǒng)的附加字段和方法。 這些字段和方法被定義為受保護(hù)的。

與其他對(duì)語(yǔ)言環(huán)境敏感的類一樣,Calendar 提供了一個(gè)類方法 getInstance,用于獲取這種類型的普遍有用的對(duì)象。 Calendar 的 getInstance 方法返回一個(gè) Calendar 對(duì)象,其日歷字段已用當(dāng)前日期和時(shí)間初始化:

     Calendar rightNow = Calendar.getInstance(); 

Calendar 對(duì)象可以生成實(shí)現(xiàn)特定語(yǔ)言和日歷樣式的日期時(shí)間格式所需的所有日歷字段值(例如,Japanese-Gregorian、Japanese-Traditional)。 日歷定義了某些日歷字段返回的值的范圍,以及它們的含義。 例如,日歷系統(tǒng)的第一個(gè)月對(duì)于所有日歷都有值 MONTH == JANUARY。 其他值由具體子類定義,例如 ERA。

獲取和設(shè)置日歷字段值

可以通過(guò)調(diào)用 set 方法來(lái)設(shè)置日歷字段值。 在需要計(jì)算其時(shí)間值(距紀(jì)元的毫秒數(shù))或日歷字段的值之前,不會(huì)解釋日歷中設(shè)置的任何字段值。 調(diào)用 get、getTimeInMillis、getTime、add 和 roll 涉及到這樣的計(jì)算。

Leniency

Calendar 有兩種解釋日歷字段的模式,寬松和非寬松。當(dāng)日歷處于寬松模式時(shí),它接受的日歷字段值范圍比它產(chǎn)生的范圍更廣。當(dāng) Calendar 重新計(jì)算日歷字段值以通過(guò) get() 返回時(shí),所有日歷字段都被規(guī)范化。例如,寬松的 GregorianCalendar 將 MONTH == JANUARY, DAY_OF_MONTH == 32 解釋為 2 月 1 日。

當(dāng)日歷處于非寬松模式時(shí),如果其日歷字段中存在任何不一致,它將引發(fā)異常。例如,GregorianCalendar 總是產(chǎn)生介于 1 和月份長(zhǎng)度之間的 DAY_OF_MONTH 值。如果設(shè)置了任何超出范圍的字段值,非寬松的 GregorianCalendar 在計(jì)算其時(shí)間或日歷字段值時(shí)會(huì)引發(fā)異常。

第一周日歷使用兩個(gè)參數(shù)定義特定于語(yǔ)言環(huán)境的一周七天:一周的第一天和第一周的最少天數(shù)(從 1 到 7)。這些數(shù)字是在構(gòu)造日歷時(shí)從語(yǔ)言環(huán)境資源數(shù)據(jù)中獲取的。它們也可以通過(guò)設(shè)置它們的值的方法明確指定。

在設(shè)置或獲取 WEEK_OF_MONTH 或 WEEK_OF_YEAR 字段時(shí),Calendar 必須確定月份或年份的第一周作為參考點(diǎn)。一個(gè)月或一年的第一周定義為從 getFirstDayOfWeek() 開(kāi)始并至少包含該月或該年的 getMinimalDaysInFirstWeek() 天的最早 7 天時(shí)間段。周數(shù) ..., -1, 0 在第一周之前;第 2 周、第 3 周、... 跟隨它。請(qǐng)注意,get() 返回的標(biāo)準(zhǔn)化編號(hào)可能不同。例如,一個(gè)特定的日歷子類可以將一年中第 1 周的前一周指定為上一年的第 n 周。

日歷字段解析 從日歷字段計(jì)算日期和時(shí)間時(shí),可能存在計(jì)算信息不足(例如只有年月,沒(méi)有月日),或者可能存在不一致的信息(例如,7 月 15 日,星期二, 1996(公歷)——1996 年 7 月 15 日實(shí)際上是星期一)。 Calendar 將通過(guò)以下方式解析日歷字段值以確定日期和時(shí)間。

如果日歷字段值有任何沖突,日歷會(huì)優(yōu)先考慮最近設(shè)置的日歷字段。以下是日歷字段的默認(rèn)組合。將使用由最近設(shè)置的單個(gè)字段確定的最近組合。

對(duì)于日期字段:

 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 

對(duì)于一天中的時(shí)間字段:

 HOUR_OF_DAY AM_PM + HOUR 

如果有任何日歷字段的值尚未在所選字段組合中設(shè)置,日歷將使用其默認(rèn)值。 每個(gè)字段的默認(rèn)值可能因具體的日歷系統(tǒng)而異。 例如,在 GregorianCalendar 中,字段的默認(rèn)值與 Epoch 的開(kāi)始相同:即 YEAR = 1970、MONTH = JANUARY、DAY_OF_MONTH = 1 等。

注意:某些奇異時(shí)間的解釋可能存在一定的歧義,通過(guò)以下方式解決:

  1. 23:59 是一天的最后一分鐘,00:00 是第二天的第一分鐘。 因此,1999 年 12 月 31 日 23:59 < 2000 年 1 月 1 日 00:00 < 2000 年 1 月 1 日 00:01。
  2. 雖然歷史上不準(zhǔn)確,但午夜也屬于“am”,中午屬于“pm”,所以同一天,12:00 am(午夜)< 12:01 am,12:00 pm(中午)< 12 :01 下午

日期或時(shí)間格式字符串不是日歷定義的一部分,因?yàn)橛脩舯仨氃谶\(yùn)行時(shí)修改或覆蓋這些字符串。使用 DateFormat 格式化日期。

字段操作 可以使用三種方法更改日歷字段:set()、add() 和 roll()。

set(f, value) 將日歷字段 f 更改為值。此外,它設(shè)置一個(gè)內(nèi)部成員變量來(lái)指示日歷字段 f 已更改。盡管日歷字段 f 立即更改,但在下一次調(diào)用 get()、getTime()、getTimeInMillis()、add() 或 roll() 之前,不會(huì)重新計(jì)算日歷的時(shí)間值(以毫秒為單位)。因此,多次調(diào)用 set() 不會(huì)觸發(fā)多次不必要的計(jì)算。作為使用 set() 更改日歷字段的結(jié)果,其他日歷字段也可能更改,具體取決于日歷字段、日歷字段值和日歷系統(tǒng)。此外,在重新計(jì)算日歷字段后,get(f) 不一定會(huì)返回調(diào)用 set 方法設(shè)置的值。具體由具體的日歷類決定。

示例:考慮最初設(shè)置為 1999 年 8 月 31 日的 GregorianCalendar。調(diào)用 set(Calendar.MONTH, Calendar.SEPTEMBER) 將日期設(shè)置為 1999 年 9 月 31 日。這是一個(gè)臨時(shí)內(nèi)部表示,如果 getTime() 則解析為 1999 年 10 月 1 日然后被調(diào)用。但是,在調(diào)用 getTime() 之前調(diào)用 set(Calendar.DAY_OF_MONTH, 30) 會(huì)將日期設(shè)置為 1999 年 9 月 30 日,因?yàn)樵?set() 本身之后不會(huì)發(fā)生重新計(jì)算。

add(f, delta) 將 delta 添加到字段 f。這相當(dāng)于調(diào)用 set(f, get(f) + delta) 并進(jìn)行兩次調(diào)整:

添加規(guī)則 1。調(diào)用后字段 f 的值減去調(diào)用前字段 f 的值是 delta,以字段 f 中發(fā)生的任何溢出為模。當(dāng)字段值超出其范圍時(shí)會(huì)發(fā)生溢出,因此,下一個(gè)較大的字段會(huì)遞增或遞減,并且字段值會(huì)調(diào)整回其范圍內(nèi)。

增加規(guī)則2。如果一個(gè)較小的字段期望是不變的,但是由于字段f改變后它的最小值或最大值發(fā)生變化或其他約束,例如時(shí)區(qū)偏移量變化,它不可能等于它的先前值,然后將其值調(diào)整為盡可能接近其預(yù)期值。較小的字段表示較小的時(shí)間單位。 HOUR 是比 DAY_OF_MONTH 小的字段。不對(duì)預(yù)期不會(huì)保持不變的較小字段進(jìn)行任何調(diào)整。日歷系統(tǒng)確定哪些字段預(yù)計(jì)是不變的。

此外,與 set() 不同,add() 強(qiáng)制立即重新計(jì)算日歷的毫秒數(shù)和所有字段。

示例:考慮最初設(shè)置為 1999 年 8 月 31 日的 GregorianCalendar。調(diào)用 add(Calendar.MONTH, 13) 將日歷設(shè)置為 2000 年 9 月 30 日。添加規(guī)則 1 將 MONTH 字段設(shè)置為九月,因?yàn)樵诎嗽绿砑?13 個(gè)月會(huì)給出九月 下一年。 由于 DAY_OF_MONTH 在 GregorianCalendar 中不能為 9 月的 31,因此添加規(guī)則 2 將 DAY_OF_MONTH 設(shè)置為 30,這是最接近的可能值。 雖然它是一個(gè)較小的字段,但 DAY_OF_WEEK 不會(huì)被規(guī)則 2 調(diào)整,因?yàn)樗A(yù)計(jì)會(huì)隨著 GregorianCalendar 中月份的變化而變化。

roll(f, delta) 將 delta 添加到字段 f 而不更改更大的字段。 這相當(dāng)于調(diào)用 add(f, delta) 并進(jìn)行以下調(diào)整:

滾動(dòng)規(guī)則。 調(diào)用后較大的字段保持不變。 較大的字段表示較大的時(shí)間單位。 DAY_OF_MONTH 是比 HOUR 更大的字段。

使用模式。 為了激發(fā) add() 和 roll() 的行為,考慮一個(gè)帶有月、日和年的遞增和遞減按鈕的用戶界面組件,以及一個(gè)底層的 GregorianCalendar。 如果界面顯示為 1999 年 1 月 31 日,用戶按下月份增量按鈕,應(yīng)該顯示什么? 如果底層實(shí)現(xiàn)使用 set(),它可能顯示為 1999 年 3 月 3 日。更好的結(jié)果是 1999 年 2 月 28 日。此外,如果用戶再次按下月份增量按鈕,它應(yīng)該顯示為 1999 年 3 月 31 日,而不是 3 月 28 日 , 1999。通過(guò)保存原始日期并使用 add() 或 roll(),根據(jù)是否應(yīng)該影響更大的字段,用戶界面可以像大多數(shù)用戶直觀預(yù)期的那樣運(yùn)行。

嵌套類摘要

修飾符和類型 描述
static class Calendar.Builder Calendar.Builder 用于從各種日期時(shí)間參數(shù)創(chuàng)建日歷。

字段摘要

修飾符和類型 字段 描述
static int ALL_STYLES getDisplayNames 的樣式說(shuō)明符,指示所有樣式中的名稱,例如“January”和“Jan”。
static int AM AM_PM 字段的值,指示一天中從午夜到正午之前的時(shí)段。
static int AM_PM get 和 set 的字段編號(hào),指示 HOUR 是在中午之前還是之后。
static int APRIL MONTH 字段的值,指示公歷和儒略歷中一年中的第四個(gè)月。
protected boolean areFieldsSet 如果 fields[] 與當(dāng)前設(shè)置的時(shí)間同步,則為true。
static int AUGUST MONTH 字段的值,指示公歷和儒略歷中一年中的第 8 個(gè)月。
static int DATE get 和 set 的字段編號(hào),指示月份中的哪一天。
static int DAY_OF_MONTH get 和 set 的字段編號(hào),指示月份中的哪一天。
static int DAY_OF_WEEK get 和 set 的字段編號(hào),指示星期幾。
static int DAY_OF_WEEK_IN_MONTH get 和 set 的字段編號(hào),指示當(dāng)前月份中星期幾的序號(hào)。
static int DAY_OF_YEAR get 和 set 的字段編號(hào),表示當(dāng)前年份中的天數(shù)。
static int DECEMBER MONTH 字段的值,指示公歷和儒略歷中一年中的第十二個(gè)月。
static int DST_OFFSET get 和 set 的字段編號(hào),以毫秒為單位指示夏令時(shí)偏移量。
static int ERA 用于表示時(shí)代的 get 和 set 字段編號(hào),例如儒略歷中的 AD 或 BC。
static int FEBRUARY MONTH 字段的值,指示公歷和儒略歷中一年中的第二個(gè)月。
static int FIELD_COUNT get 和 set 識(shí)別的不同字段的數(shù)量。
protected int[] fields 此日歷當(dāng)前設(shè)置時(shí)間的日歷字段值。
static int FRIDAY 表示星期五的 DAY_OF_WEEK 字段的值。
static int HOUR get 和 set 的字段編號(hào),指示上午或下午的時(shí)間。
static int HOUR_OF_DAY get 和 set 的字段編號(hào),指示一天中的小時(shí)。
protected boolean[] isSet 指示是否設(shè)置了日歷的指定日歷字段的標(biāo)志。
protected boolean isTimeSet 如果時(shí)間值有效,則為true。
static int JANUARY MONTH 字段的值,指示公歷和儒略歷中一年中的第一個(gè)月。
static int JULY MONTH 字段的值,指示公歷和儒略歷中一年中的第七個(gè)月。
static int JUNE MONTH 字段的值,指示公歷和儒略歷中一年中的第六個(gè)月。
static int LONG getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 LONG_FORMAT。
static int LONG_FORMAT getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的長(zhǎng)名稱。
static int LONG_STANDALONE getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的長(zhǎng)名稱,例如作為日歷標(biāo)題的月份名稱。
static int MARCH MONTH 字段的值,指示公歷和儒略歷中一年中的第三個(gè)月。
static int MAY MONTH 字段的值,指示公歷和儒略歷中一年中的第五個(gè)月。
static int MILLISECOND get 和 set 的字段編號(hào),指示秒內(nèi)的毫秒。
static int MINUTE get 和 set 的字段編號(hào),指示一小時(shí)內(nèi)的分鐘。
static int MONDAY DAY_OF_WEEK 字段的值表示星期一。
static int MONTH get 和 set 的字段編號(hào),指示月份。
static int NARROW_FORMAT getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的窄名稱。
static int NARROW_STANDALONE getDisplayName 和 getDisplayNames 的樣式說(shuō)明符分別指示窄名稱。
static int NOVEMBER MONTH 字段的值,指示公歷和儒略歷中一年中的第十一個(gè)月。
static int OCTOBER MONTH 字段的值,指示公歷和儒略歷中一年中的第十個(gè)月。
static int PM AM_PM 字段的值,指示一天中從中午到午夜之前的時(shí)段。
static int SATURDAY 表示星期六的 DAY_OF_WEEK 字段的值。
static int SECOND get 和 set 的字段編號(hào),指示一分鐘內(nèi)的秒數(shù)。
static int SEPTEMBER MONTH 字段的值,指示公歷和儒略歷中一年中的第 9 個(gè)月。
static int SHORT getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 SHORT_FORMAT。
static int SHORT_FORMAT getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的短名稱。
static int SHORT_STANDALONE getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的短名稱,例如作為日歷標(biāo)題的月份縮寫(xiě)。
static int SUNDAY 表示星期日的 DAY_OF_WEEK 字段的值。
static int THURSDAY 表示星期四的 DAY_OF_WEEK 字段的值。
protected long time 此日歷的當(dāng)前設(shè)置時(shí)間,以 1970 年 1 月 1 日 0:00:00 GMT 之后的毫秒數(shù)表示。
static int TUESDAY 表示星期二的 DAY_OF_WEEK 字段的值。
static int UNDECIMBER MONTH 字段的值表示一年中的第十三個(gè)月。
static int WEDNESDAY 表示星期三的 DAY_OF_WEEK 字段的值。
static int WEEK_OF_MONTH get 和 set 的字段編號(hào),指示當(dāng)前月份中的周數(shù)。
static int WEEK_OF_YEAR get 和 set 的字段編號(hào),表示當(dāng)前年份中的周數(shù)。
static int YEAR get 和 set 的字段編號(hào),指示年份。
static int ZONE_OFFSET get 和 set 的字段編號(hào),指示與 GMT 的原始偏移量(以毫秒為單位)。

構(gòu)造函數(shù)摘要

修飾符 構(gòu)造函數(shù) 描述
protected Calendar() 構(gòu)造一個(gè)具有默認(rèn)時(shí)區(qū)和默認(rèn) FORMAT 語(yǔ)言環(huán)境的日歷。
protected Calendar(TimeZone zone, Locale aLocale) 構(gòu)造具有指定時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。

方法總結(jié)

修飾符和類型 方法 描述
abstract void add(int field, int amount) 根據(jù)日歷的規(guī)則,在給定的日歷字段中添加或減去指定的時(shí)間量。
boolean after(Object when) 返回此 Calendar 是否表示指定 Object 表示的時(shí)間之后的時(shí)間。
boolean before(Object when) 返回此 Calendar 是否表示指定 Object 表示的時(shí)間之前的時(shí)間。
void clear() 設(shè)置此日歷未定義的所有日歷字段值和時(shí)間值(從紀(jì)元開(kāi)始的毫秒偏移量)。
void clear(int field) 設(shè)置此日歷未定義的給定日歷字段值和時(shí)間值(從紀(jì)元開(kāi)始的毫秒偏移量)。
Object clone() 創(chuàng)建并返回此對(duì)象的副本。
int compareTo(Calendar anotherCalendar) 比較兩個(gè) Calendar 對(duì)象表示的時(shí)間值(從 Epoch 開(kāi)始的毫秒偏移量)。
protected void complete() 填寫(xiě)日歷字段中任何未設(shè)置的字段。
protected abstract void computeFields() 將當(dāng)前毫秒時(shí)間值 time 轉(zhuǎn)換為 [fields] 中的日歷字段值。
protected abstract void computeTime() 將 [fields] 中的當(dāng)前日歷字段值轉(zhuǎn)換為毫秒時(shí)間值 time。
boolean equals(Object obj) 將此日歷與指定的對(duì)象進(jìn)行比較。
int get(int field) 返回給定日歷字段的值。
int getActualMaximum(int field) 在給定此日歷的時(shí)間值的情況下,返回指定日歷字段可以具有的最大值。
int getActualMinimum(int field) 在給定此日歷的時(shí)間值的情況下,返回指定日歷字段可能具有的最小值。
static SetString getAvailableCalendarTypes() 返回一個(gè)不可修改的 Set,其中包含運(yùn)行時(shí)環(huán)境中 Calendar 支持的所有日歷類型。
static Locale[] getAvailableLocales() 返回此類的 getInstance 方法可以為其返回本地化實(shí)例的所有語(yǔ)言環(huán)境的數(shù)組。
String getCalendarType() 返回此日歷的日歷類型。
String getDisplayName(int field, int style, Locale locale) 返回給定樣式和語(yǔ)言環(huán)境中日歷字段值的字符串表示形式。
MapString,Integer getDisplayNames(int field, int style, Locale locale) 返回一個(gè) Map,其中包含給定樣式和語(yǔ)言環(huán)境中日歷字段的所有名稱及其對(duì)應(yīng)的字段值。
int getFirstDayOfWeek() 獲取一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。
abstract int getGreatestMinimum(int field) 返回此 Calendar 實(shí)例的給定日歷字段的最大最小值。
static Calendar getInstance() 獲取使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。
static Calendar getInstance(Locale aLocale) 獲取使用默認(rèn)時(shí)區(qū)和指定區(qū)域設(shè)置的日歷。
static Calendar getInstance(TimeZone zone) 獲取使用指定時(shí)區(qū)和默認(rèn)語(yǔ)言環(huán)境的日歷。
static Calendar getInstance(TimeZone zone, Locale aLocale) 獲取具有指定時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。
abstract int getLeastMaximum(int field) 返回此 Calendar 實(shí)例的給定日歷字段的最低最大值。
abstract int getMaximum(int field) 返回此 Calendar 實(shí)例的給定日歷字段的最大值。
int getMinimalDaysInFirstWeek() 獲取一年中第一周所需的最少天數(shù); 例如,如果第一周定義為包含一年中第一個(gè)月的第一天,則此方法返回 1。
abstract int getMinimum(int field) 返回此 Calendar 實(shí)例的給定日歷字段的最小值。
Date getTime() 返回一個(gè) Date 對(duì)象,表示此日歷的時(shí)間值(從 Epoch 開(kāi)始的毫秒偏移量)。
long getTimeInMillis() 返回此日歷的時(shí)間值(以毫秒為單位)。
TimeZone getTimeZone() 獲取時(shí)區(qū)。
int getWeeksInWeekYear() 返回此日歷表示的一周年中的周數(shù)。
int getWeekYear() 返回此日歷表示的周年。
int hashCode() 返回此日歷的哈希碼。
protected int internalGet(int field) 返回給定日歷字段的值。
boolean isLenient() 告訴日期/時(shí)間解釋是否寬松。
boolean isSet(int field) 確定給定的日歷字段是否設(shè)置了值,包括該值已由 get 方法調(diào)用觸發(fā)的內(nèi)部字段計(jì)算設(shè)置的情況。
boolean isWeekDateSupported() 返回此日歷是否支持星期日期。
abstract void roll(int field, boolean up) 在給定時(shí)間字段上添加或減去(上/下)單個(gè)時(shí)間單位,而不更改更大的字段。
void roll(int field, int amount) 將指定的(簽名的)金額添加到指定的日歷字段而不更改更大的字段。
void set(int field, int value) 將給定的日歷字段設(shè)置為給定的值。
void set(int year, int month, int date) 設(shè)置日歷字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
void set(int year, int month, int date, int hourOfDay, int minute) 設(shè)置日歷字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
void set(int year, int month, int date, int hourOfDay, int minute, int second) 設(shè)置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、MINUTE 和 SECOND 的值。
void setFirstDayOfWeek(int value) 設(shè)置一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。
void setLenient(boolean lenient) 指定日期/時(shí)間解釋是否寬松。
void setMinimalDaysInFirstWeek(int value) 設(shè)置一年中第一周所需的最少天數(shù); 例如,如果第一周被定義為包含一年中第一個(gè)月的第一天,則使用值 1 調(diào)用此方法。
void setTime(Date date) 使用給定的日期設(shè)置此日歷的時(shí)間。
void setTimeInMillis(long millis) 根據(jù)給定的 long 值設(shè)置此日歷的當(dāng)前時(shí)間。
void setTimeZone(TimeZone value) 使用給定的時(shí)區(qū)值設(shè)置時(shí)區(qū)。
void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) 使用給定的日期說(shuō)明符設(shè)置此日歷的日期 - 星期幾、一年中的星期和星期幾。
Instant toInstant() 將此對(duì)象轉(zhuǎn)換為 Instant。
String toString() 返回此日歷的字符串表示形式。
從類 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait

字段詳細(xì)信息

ALL_STYLES

public static final int ALL_STYLES

getDisplayNames 的樣式說(shuō)明符,指示所有樣式中的名稱,例如“January”和“Jan”。

AM

public static final int AM

AM_PM 字段的值,指示一天中從午夜到正午之前的時(shí)段。

AM_PM

public static final int AM_PM

get 和 set 的字段編號(hào),指示 HOUR 是在中午之前還是之后。 例如,在晚上 10:04:15.250,AM_PM 是 PM。

APRIL

public static final int APRIL

MONTH 字段的值,指示公歷和儒略歷中一年中的第四個(gè)月。

AUGUST

public static final int AUGUST

MONTH 字段的值,指示公歷和儒略歷中一年中的第 8 個(gè)月。

DATE

public static final int DATE

get 和 set 的字段編號(hào),指示月份中的哪一天。 這是 DAY_OF_MONTH 的同義詞。 該月的第一天的值為 1。

DAY_OF_MONTH

public static final int DAY_OF_MONTH

get 和 set 的字段編號(hào),指示月份中的哪一天。 這是 DATE 的同義詞。 該月的第一天的值為 1。

DAY_OF_WEEK

public static final int DAY_OF_WEEK

get 和 set 的字段編號(hào),指示星期幾。 此字段采用 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY 值。

DAY_OF_WEEK_IN_MONTH

public static final int DAY_OF_WEEK_IN_MONTH

get 和 set 的字段編號(hào),指示當(dāng)前月份中星期幾的序號(hào)。 與 DAY_OF_WEEK 字段一起,它唯一地指定一個(gè)月內(nèi)的一天。 與 WEEK_OF_MONTH 和 WEEK_OF_YEAR 不同,該字段的值不依賴于 getFirstDayOfWeek() 或 getMinimalDaysInFirstWeek()。 DAY_OF_MONTH 1 到 7 始終對(duì)應(yīng) DAY_OF_WEEK_IN_MONTH 1; 8 到 14 對(duì)應(yīng)于 DAY_OF_WEEK_IN_MONTH 2,依此類推。 DAY_OF_WEEK_IN_MONTH 0 表示 DAY_OF_WEEK_IN_MONTH 1 之前的一周。負(fù)值從月底開(kāi)始倒數(shù),因此一個(gè)月的最后一個(gè)星期日指定為 DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1。 因?yàn)樨?fù)值向后計(jì)數(shù),所以它們?cè)谠路輧?nèi)的對(duì)齊方式通常與正值不同。 例如,如果一個(gè)月有 31 天,DAY_OF_WEEK_IN_MONTH -1 將與 DAY_OF_WEEK_IN_MONTH 5 和 4 結(jié)束重疊。

DAY_OF_YEAR

public static final int DAY_OF_YEAR

get 和 set 的字段編號(hào),表示當(dāng)前年份中的天數(shù)。 一年的第一天的值為 1。

DECEMBER

public static final int DECEMBER

MONTH 字段的值,指示公歷和儒略歷中一年中的第十二個(gè)月。

DST_OFFSET

public static final int DST_OFFSET

get 和 set 的字段編號(hào),以毫秒為單位指示夏令時(shí)偏移量。

如果 TimeZone 實(shí)現(xiàn)子類支持歷史夏令時(shí)時(shí)間表更改,則此字段反映此日歷的時(shí)區(qū)的正確夏令時(shí)偏移值。

ERA

public static final int ERA

用于表示時(shí)代的 get 和 set 字段編號(hào),例如儒略歷中的 AD 或 BC。 這是一個(gè)特定于日歷的值。

FEBRUARY

public static final int FEBRUARY

MONTH 字段的值,指示公歷和儒略歷中一年中的第二個(gè)月。

FIELD_COUNT

public static final int FIELD_COUNT

get 和 set 識(shí)別的不同字段的數(shù)量。 字段編號(hào)范圍為 0..FIELD_COUNT-1。

FRIDAY

public static final int FRIDAY

表示星期五的 DAY_OF_WEEK 字段的值。

HOUR

public static final int HOUR

get 和 set 的字段編號(hào),指示上午或下午的時(shí)間。 HOUR 用于 12 小時(shí)制 (0 - 11)。 中午和午夜用 0 表示,而不是用 12 表示。例如,在晚上 10:04:15.250,HOUR 是 10。

HOUR_OF_DAY

public static final int HOUR_OF_DAY

get 和 set 的字段編號(hào),指示一天中的小時(shí)。 HOUR_OF_DAY 用于 24 小時(shí)制。 例如,在晚上 10:04:15.250,HOUR_OF_DAY 是 22。

JANUARY

public static final int JANUARY

MONTH 字段的值,指示公歷和儒略歷中一年中的第一個(gè)月。

JULY

public static final int JULY

MONTH 字段的值,指示公歷和儒略歷中一年中的第七個(gè)月。

JUNE

public static final int JUNE

MONTH 字段的值,指示公歷和儒略歷中一年中的第 6 個(gè)月。

LONG

public static final int LONG

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 LONG_FORMAT。

LONG_FORMAT

public static final int LONG_FORMAT

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的長(zhǎng)名稱。

LONG_STANDALONE

public static final int LONG_STANDALONE

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的長(zhǎng)名稱,例如作為日歷標(biāo)題的月份名稱。

MARCH

public static final int MARCH

MONTH 字段的值,指示公歷和儒略歷中一年中的第三個(gè)月。

MAY

public static final int MAY

MONTH 字段的值,指示公歷和儒略歷中一年中的第五個(gè)月。

MILLISECOND

public static final int MILLISECOND

get 和 set 的字段編號(hào),指示秒內(nèi)的毫秒。 例如,在晚上 10:04:15.250,MILLISECOND 是 250。

MINUTE

public static final int MINUTE

get 和 set 的字段編號(hào),指示一小時(shí)內(nèi)的分鐘。 例如,在晚上 10:04:15.250,MINUTE 為 4。

MONDAY

public static final int MONDAY

DAY_OF_WEEK 字段的值表示星期一。

MONTH

public static final int MONTH

get 和 set 的字段編號(hào),指示月份。 這是特定于日歷的值。 公歷和儒略歷中的第一個(gè)月是 JANUARY,即 0; 最后一個(gè)取決于一年中的月數(shù)。

NARROW_FORMAT

public static final int NARROW_FORMAT

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的窄名稱。 窄名稱通常是單個(gè)字符串,例如星期一的“M”。

NARROW_STANDALONE

public static final int NARROW_STANDALONE

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符分別指示窄名稱。 窄名稱通常是單個(gè)字符串,例如星期一的“M”。

NOVEMBER

public static final int NOVEMBER

MONTH 字段的值,指示公歷和儒略歷中一年中的第十一個(gè)月。

OCTOBER

public static final int OCTOBER

MONTH 字段的值,指示公歷和儒略歷中一年中的第十個(gè)月。

PM

public static final int PM

AM_PM 字段的值,指示一天中從中午到午夜之前的時(shí)段。

SATURDAY

public static final int SATURDAY

表示星期六的 DAY_OF_WEEK 字段的值。

SECOND

public static final int SECOND

get 和 set 的字段編號(hào),指示一分鐘內(nèi)的秒數(shù)。 例如,在晚上 10:04:15.250,SECOND 是 15。

SEPTEMBER

public static final int SEPTEMBER

MONTH 字段的值,指示公歷和儒略歷中一年中的第 9 個(gè)月。

SHORT

public static final int SHORT

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 SHORT_FORMAT。

SHORT_FORMAT

public static final int SHORT_FORMAT

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的短名稱。

SHORT_STANDALONE

public static final int SHORT_STANDALONE

getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的短名稱,例如作為日歷標(biāo)題的月份縮寫(xiě)。

SUNDAY

public static final int SUNDAY

表示星期日的 DAY_OF_WEEK 字段的值。

THURSDAY

public static final int THURSDAY

表示星期四的 DAY_OF_WEEK 字段的值。

TUESDAY

public static final int TUESDAY

表示星期二的 DAY_OF_WEEK 字段的值。

UNDECIMBER

public static final int UNDECIMBER

MONTH 字段的值表示一年中的第十三個(gè)月。 盡管 GregorianCalendar 不使用此值,但農(nóng)歷使用。

WEDNESDAY

public static final int WEDNESDAY

表示星期三的 DAY_OF_WEEK 字段的值。

WEEK_OF_MONTH

public static final int WEEK_OF_MONTH

get 和 set 的字段編號(hào),指示當(dāng)前月份中的周數(shù)。 該月的第一周,由 getFirstDayOfWeek() 和 getMinimalDaysInFirstWeek() 定義,值為 1。子類定義該月第一周前幾天的 WEEK_OF_MONTH 值。

WEEK_OF_YEAR

public static final int WEEK_OF_YEAR

get 和 set 的字段編號(hào),表示當(dāng)前年份中的周數(shù)。 一年中的第一周,由 getFirstDayOfWeek() 和 getMinimalDaysInFirstWeek() 定義,值為 1。子類定義一年中第一周前幾天的 WEEK_OF_YEAR 值。

YEAR

public static final int YEAR

get 和 set 的字段編號(hào),指示年份。 這是一個(gè)特定于日歷的值; 請(qǐng)參閱子類文檔。

ZONE_OFFSET

public static final int ZONE_OFFSET

get 和 set 的字段編號(hào),指示與 GMT 的原始偏移量(以毫秒為單位)。

如果 TimeZone 實(shí)現(xiàn)子類支持歷史 GMT 偏移更改,則此字段反映此日歷的時(shí)區(qū)的正確 GMT 偏移值。

areFieldsSet

protected boolean areFieldsSet

如果 fields[] 與當(dāng)前設(shè)置的時(shí)間同步,則為true。 如果為 false,則下一次獲取字段值的嘗試將強(qiáng)制從當(dāng)前時(shí)間值重新計(jì)算所有字段。

fields

protected int[] fields

此日歷當(dāng)前設(shè)置時(shí)間的日歷字段值。 這是一個(gè) FIELD_COUNT 整數(shù)數(shù)組,索引值為 ERA 到 DST_OFFSET。

isSet

protected boolean[] isSet

指示是否設(shè)置了日歷的指定日歷字段的標(biāo)志。 新對(duì)象沒(méi)有設(shè)置字段。 在第一次調(diào)用生成字段的方法之后,它們都保持設(shè)置。 這是一個(gè) FIELD_COUNT 布爾數(shù)組,索引值 ERA 到 DST_OFFSET。

isTimeSet

protected boolean isTimeSet

如果時(shí)間值有效,則為true。 通過(guò)更改字段 [] 的項(xiàng)目使時(shí)間無(wú)效。

time

protected long time

此日歷的當(dāng)前設(shè)置時(shí)間,以 1970 年 1 月 1 日 0:00:00 GMT 之后的毫秒數(shù)表示。

構(gòu)造函數(shù)詳細(xì)信息

Calendar

protected Calendar()

構(gòu)造一個(gè)具有默認(rèn)時(shí)區(qū)和默認(rèn) FORMAT 語(yǔ)言環(huán)境的日歷。

Calendar

protected Calendar(TimeZone zone, Locale aLocale)

構(gòu)造具有指定時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。

參數(shù):

參數(shù)名稱 參數(shù)描述
zone 要使用的時(shí)區(qū)
aLocale 周數(shù)據(jù)的語(yǔ)言環(huán)境

方法詳情

getInstance

public static Calendar getInstance()

獲取使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。 返回的日歷基于具有默認(rèn) Locale.Category#FORMAT 區(qū)域設(shè)置的默認(rèn)時(shí)區(qū)中的當(dāng)前時(shí)間。

返回:

日歷。

getInstance

public static Calendar getInstance(TimeZone zone)

獲取使用指定時(shí)區(qū)和默認(rèn)語(yǔ)言環(huán)境的日歷。 返回的日歷基于給定時(shí)區(qū)的當(dāng)前時(shí)間,具有默認(rèn)的 Locale.Category#FORMAT 語(yǔ)言環(huán)境。

參數(shù):

參數(shù)名稱 參數(shù)描述
zone 要使用的時(shí)區(qū)

返回:

日歷。

getInstance

public static Calendar getInstance(Locale aLocale)

獲取使用默認(rèn)時(shí)區(qū)和指定區(qū)域設(shè)置的日歷。 返回的日歷基于具有給定區(qū)域設(shè)置的默認(rèn)時(shí)區(qū)中的當(dāng)前時(shí)間。

參數(shù):

參數(shù)名稱 參數(shù)描述
aLocale 周數(shù)據(jù)的語(yǔ)言環(huán)境

返回:

日歷。

getInstance

public static Calendar getInstance(TimeZone zone, Locale aLocale)

獲取具有指定時(shí)區(qū)和語(yǔ)言環(huán)境的日歷。 返回的日歷基于具有給定語(yǔ)言環(huán)境的給定時(shí)區(qū)中的當(dāng)前時(shí)間。

參數(shù):

參數(shù)名稱 參數(shù)描述
zone 要使用的時(shí)區(qū)
aLocale 周數(shù)據(jù)的語(yǔ)言環(huán)境

返回:

日歷。

getAvailableLocales

public static Locale[] getAvailableLocales()

返回此類的 getInstance 方法可以為其返回本地化實(shí)例的所有語(yǔ)言環(huán)境的數(shù)組。 返回的數(shù)組必須至少包含一個(gè)等于 Locale.US 的 Locale 實(shí)例。

返回:

本地化 Calendar 實(shí)例可用的語(yǔ)言環(huán)境數(shù)組。

computeTime

protected abstract void computeTime()

將 [fields] 中的當(dāng)前日歷字段值轉(zhuǎn)換為毫秒時(shí)間值 time。

computeFields

protected abstract void computeFields()

將當(dāng)前毫秒時(shí)間值 time 轉(zhuǎn)換為 [fields] 中的日歷字段值。 這允許您將日歷字段值與為日歷設(shè)置的新時(shí)間同步。 時(shí)間不先重新計(jì)算; 要重新計(jì)算時(shí)間,然后是字段,請(qǐng)調(diào)用 complete() 方法。

getTime

public final Date getTime()

返回一個(gè) Date 對(duì)象,表示此日歷的時(shí)間值(從 Epoch 開(kāi)始的毫秒偏移量)。

返回:

表示時(shí)間值的日期。

setTime

public final void setTime(Date date)

使用給定的日期設(shè)置此日歷的時(shí)間。

注意:使用 Date(Long.MAX_VALUE) 或 Date(Long.MIN_VALUE) 調(diào)用 setTime() 可能會(huì)從 get() 中產(chǎn)生不正確的字段值。

參數(shù):

參數(shù)名稱 參數(shù)描述
date 給定的日期。

getTimeInMillis

public long getTimeInMillis()

返回此日歷的時(shí)間值(以毫秒為單位)。

返回:

當(dāng)前時(shí)間,從紀(jì)元開(kāi)始的 UTC 毫秒。

setTimeInMillis

public void setTimeInMillis(long millis)

根據(jù)給定的 long 值設(shè)置此日歷的當(dāng)前時(shí)間。

參數(shù):

參數(shù)名稱 參數(shù)描述
millis 從紀(jì)元開(kāi)始的新時(shí)間(以 UTC 毫秒為單位)。

get

public int get(int field)

返回給定日歷字段的值。 在寬松模式下,所有日歷字段都被規(guī)范化。 在非寬松模式下,所有日歷字段都經(jīng)過(guò)驗(yàn)證,如果任何日歷字段的值超出范圍,此方法將引發(fā)異常。 規(guī)范化和驗(yàn)證由 complete() 方法處理,該過(guò)程取決于日歷系統(tǒng)。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 給定的日歷字段。

返回:

給定日歷字段的值。

Throws:

Throw名稱 Throw描述
ArrayIndexOutOfBoundsException 如果指定的字段超出范圍(字段 < 0 || 字段 >= FIELD_COUNT)。

internalGet

protected final int internalGet(int field)

返回給定日歷字段的值。 此方法不涉及字段值的規(guī)范化或驗(yàn)證。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 給定的日歷字段。

返回:

給定日歷字段的值。

set

public void set(int field, int value)

將給定的日歷字段設(shè)置為給定的值。 無(wú)論寬大模式如何,此方法都不會(huì)解釋該值。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 給定的日歷字段。
value 要為給定日歷字段設(shè)置的值。

Throws:

Throw名稱 Throw描述
ArrayIndexOutOfBoundsException 如果指定的字段超出范圍(字段 < 0 || 字段 >= FIELD_COUNT)。 在非寬松模式下。

set

public final void set(int year, int month, int date)

設(shè)置日歷字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 保留其他日歷字段的先前值。 如果不需要,請(qǐng)先調(diào)用 clear()。

參數(shù):

參數(shù)名稱 參數(shù)描述
year 用于設(shè)置 YEAR 日歷字段的值。
month 用于設(shè)置 MONTH 日歷字段的值。 月份值從 0 開(kāi)始。 例如,0 表示一月。
date 用于設(shè)置 DAY_OF_MONTH 日歷字段的值。

set

public final void set(int year, int month, int date, int hourOfDay, int minute)

設(shè)置日歷字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 保留其他字段的先前值。 如果不需要,請(qǐng)先調(diào)用 clear()。

參數(shù):

參數(shù)名稱 參數(shù)描述
year 用于設(shè)置 YEAR 日歷字段的值。
month 用于設(shè)置 MONTH 日歷字段的值。 月份值從 0 開(kāi)始。 例如,0 表示一月。
date 用于設(shè)置 DAY_OF_MONTH 日歷字段的值。
hourOfDay 用于設(shè)置 HOUR_OF_DAY 日歷字段的值。
minute 用于設(shè)置 MINUTE 日歷字段的值。

set

public final void set(int year, int month, int date, int hourOfDay, int minute, int second)

設(shè)置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、MINUTE 和 SECOND 的值。 保留其他字段的先前值。 如果不需要,請(qǐng)先調(diào)用 clear()。

參數(shù):

參數(shù)名稱 參數(shù)描述
year 用于設(shè)置 YEAR 日歷字段的值。
month 用于設(shè)置 MONTH 日歷字段的值。 月份值從 0 開(kāi)始。 例如,0 表示一月。
date 用于設(shè)置 DAY_OF_MONTH 日歷字段的值。
hourOfDay 用于設(shè)置 HOUR_OF_DAY 日歷字段的值。
minute 用于設(shè)置 MINUTE 日歷字段的值。
second 用于設(shè)置 SECOND 日歷字段的值。

clear

public final void clear()

設(shè)置此日歷未定義的所有日歷字段值和時(shí)間值(從紀(jì)元開(kāi)始的毫秒偏移量)。 這意味著 isSet() 將為所有日歷字段返回 false,并且日期和時(shí)間計(jì)算會(huì)將這些字段視為從未設(shè)置過(guò)的字段。 日歷實(shí)現(xiàn)類可以使用其特定的默認(rèn)字段值進(jìn)行日期/時(shí)間計(jì)算。 例如,如果 YEAR 字段值未定義,則 GregorianCalendar 使用 1970。

clear

public final void clear(int field)

設(shè)置此日歷未定義的給定日歷字段值和時(shí)間值(從紀(jì)元開(kāi)始的毫秒偏移量)。 這意味著 isSet(field) 將返回 false,并且日期和時(shí)間計(jì)算會(huì)將字段視為從未設(shè)置過(guò)。 日歷實(shí)現(xiàn)類可以使用字段的特定默認(rèn)值進(jìn)行日期和時(shí)間計(jì)算。

HOUR_OF_DAY、HOUR 和 AM_PM 字段是獨(dú)立處理的,并應(yīng)用一天中時(shí)間的解析規(guī)則。 清除其中一個(gè)字段不會(huì)重置此日歷的小時(shí)值。 使用 set(Calendar.HOUR_OF_DAY, 0) 重置小時(shí)值。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 要清除的日歷字段。

isSet

public final boolean isSet(int field)

確定給定的日歷字段是否設(shè)置了值,包括該值已由 get 方法調(diào)用觸發(fā)的內(nèi)部字段計(jì)算設(shè)置的情況。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 要測(cè)試的日歷字段

返回:

如果給定的日歷字段設(shè)置了值,則為 true; 否則為false。

getDisplayName

public String getDisplayName(int field, int style, Locale locale)

返回給定樣式和語(yǔ)言環(huán)境中日歷字段值的字符串表示形式。 如果沒(méi)有字符串表示適用,則返回 null。 如果字符串表示適用于給定的日歷字段,則此方法調(diào)用 Calendar#get(int) 以獲取日歷字段值。

例如,如果這個(gè) Calendar 是一個(gè) GregorianCalendar 并且它的日期是 2005-01-01,那么 MONTH 字段的字符串表示形式將是英語(yǔ)語(yǔ)言環(huán)境中長(zhǎng)格式的“January”或短格式的“Jan”。 但是,對(duì)于 DAY_OF_MONTH 字段沒(méi)有可用的字符串表示形式,并且此方法將返回 null。

默認(rèn)實(shí)現(xiàn)支持 DateFormatSymbols 在給定語(yǔ)言環(huán)境中具有名稱的日歷字段。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 為其返回字符串表示的日歷字段
style 應(yīng)用于字符串表示的樣式; SHORT_FORMAT (SHORT)、SHORT_STANDALONE、LONG_FORMAT (LONG)、LONG_STANDALONE、NARROW_FORMAT 或 NARROW_STANDALONE 之一。
locale 字符串表示的語(yǔ)言環(huán)境(忽略語(yǔ)言環(huán)境指定的任何日歷類型)

返回:

給定樣式中給定字段的字符串表示形式,如果沒(méi)有字符串表示形式適用,則返回 null。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果字段或樣式無(wú)效,或者此日歷不寬松并且任何日歷字段具有無(wú)效值
NullPointerException 如果語(yǔ)言環(huán)境為空

getDisplayNames

public MapString,Integer getDisplayNames(int field, int style, Locale locale)

返回一個(gè) Map,其中包含給定樣式和語(yǔ)言環(huán)境中日歷字段的所有名稱及其對(duì)應(yīng)的字段值。例如,如果此 Calendar 是 GregorianCalendar,則返回的地圖將包含“Jan”到 JANUARY、“Feb”到 FEBRUARY 等,以英語(yǔ)語(yǔ)言環(huán)境中的簡(jiǎn)寫(xiě)形式。

由于使用單個(gè)字符,窄名稱可能不是唯一的,例如“S”代表星期日和星期六。在這種情況下,返回的 Map 中不包含窄名稱。

可以考慮其他日歷字段的值以確定一組顯示名稱。例如,如果此 Calendar 是陰陽(yáng)歷系統(tǒng)并且 YEAR 字段給出的年份值具有閏月,則此方法將返回包含閏月名稱的月份名稱,并且月份名稱將映射到它們特定于年份的值。

默認(rèn)實(shí)現(xiàn)支持包含在 DateFormatSymbols 中的顯示名稱。例如,如果字段為 MONTH,樣式為 ALL_STYLES,則此方法返回一個(gè) Map,其中包含 DateFormatSymbols#getShortMonths() 和 DateFormatSymbols#getMonths() 返回的所有字符串。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 返回顯示名稱的日歷字段
style 應(yīng)用于字符串表示的樣式; SHORT_FORMAT (SHORT)、SHORT_STANDALONE、LONG_FORMAT (LONG)、LONG_STANDALONE、NARROW_FORMAT 或 NARROW_STANDALONE 之一
locale 顯示名稱的語(yǔ)言環(huán)境

返回:

包含樣式和語(yǔ)言環(huán)境中的所有顯示名稱及其字段值的 Map,如果沒(méi)有為字段定義顯示名稱,則為 null

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果字段或樣式無(wú)效,或者此日歷不寬松并且任何日歷字段具有無(wú)效值
NullPointerException 如果語(yǔ)言環(huán)境為空

complete

protected void complete()

填寫(xiě)日歷字段中任何未設(shè)置的字段。 首先,如果尚未從日歷字段值計(jì)算時(shí)間值(與 Epoch 的毫秒偏移量),則調(diào)用 computeTime() 方法。 然后,調(diào)用 computeFields() 方法來(lái)計(jì)算所有日歷字段值。

getAvailableCalendarTypes

public static SetString getAvailableCalendarTypes()

返回一個(gè)不可修改的 Set,其中包含運(yùn)行時(shí)環(huán)境中 Calendar 支持的所有日歷類型。 可用的日歷類型可用于 Unicode 語(yǔ)言環(huán)境擴(kuò)展。 返回的 Set 至少包含“gregory”。 日歷類型不包括別名,例如“gregory”的“gregorian”。

返回:

一個(gè)不可修改的 Set 包含所有可用的日歷類型

getCalendarType

public String getCalendarType()

返回此日歷的日歷類型。 日歷類型由 Unicode 區(qū)域設(shè)置數(shù)據(jù)標(biāo)記語(yǔ)言 (LDML) 規(guī)范定義。

此方法的默認(rèn)實(shí)現(xiàn)返回此 Calendar 實(shí)例的類名。 任何實(shí)現(xiàn) LDML 定義的日歷系統(tǒng)的子類都應(yīng)該重寫(xiě)此方法以返回適當(dāng)?shù)娜諝v類型。

返回:

LDML 定義的日歷類型或此 Calendar 實(shí)例的類名

equals

public boolean equals(Object obj)

將此日歷與指定的對(duì)象進(jìn)行比較。 當(dāng)且僅當(dāng)參數(shù)是同一日歷系統(tǒng)的日歷對(duì)象時(shí),結(jié)果才為true,該對(duì)象在與此對(duì)象相同的日歷參數(shù)下表示相同的時(shí)間值(從紀(jì)元開(kāi)始的毫秒偏移量)。

Calendar 參數(shù)是由 isLenient、getFirstDayOfWeek、getMinimalDaysInFirstWeek 和 getTimeZone 方法表示的值。 如果兩個(gè)日歷之間的這些參數(shù)有任何差異,則此方法返回 false。

使用 compareTo 方法僅比較時(shí)間值。

覆蓋:

類 Object 中的等于

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 比較的對(duì)象。

返回:

如果此對(duì)象等于 obj,則為 true; 否則為false。

hashCode

public int hashCode()

返回此日歷的哈希碼。

覆蓋:

類 Object 中的 hashCode

返回:

此對(duì)象的哈希碼值。

before

public boolean before(Object when)

返回此 Calendar 是否表示指定 Object 表示的時(shí)間之前的時(shí)間。 該方法等價(jià)于:

         compareTo(when) < 0 

當(dāng)且僅當(dāng) when 是 Calendar 實(shí)例。 否則,該方法返回 false。

參數(shù):

參數(shù)名稱 參數(shù)描述
when 要比較的對(duì)象

返回:

如果此日歷的時(shí)間早于 when 表示的時(shí)間,則為 true; 否則為false。

after

public boolean after(Object when)

返回此 Calendar 是否表示指定 Object 表示的時(shí)間之后的時(shí)間。 該方法等價(jià)于:

         compareTo(when) > 0 

當(dāng)且僅當(dāng) when 是 Calendar 實(shí)例。 否則,該方法返回 false。

參數(shù):

Parameter Name Parameter Description
when the Object to be compared

返回:

如果此日歷的時(shí)間在 when 表示的時(shí)間之后,則為 true; 否則為false。

compareTo

public int compareTo(Calendar anotherCalendar)

比較兩個(gè) Calendar 對(duì)象表示的時(shí)間值(從 Epoch 開(kāi)始的毫秒偏移量)。

指定者:

接口 ComparableCalendar 中的 compareTo

參數(shù):

參數(shù)名稱 參數(shù)描述
anotherCalendar 要比較的日歷。

返回:

如果參數(shù)表示的時(shí)間等于此日歷表示的時(shí)間,則值為 0; 如果此日歷的時(shí)間早于參數(shù)表示的時(shí)間,則值小于 0; 如果此日歷的時(shí)間在參數(shù)表示的時(shí)間之后,則值大于 0。

Throws:

Throw名稱 Throw描述
NullPointerException 如果指定的日歷為空。
IllegalArgumentException 如果由于任何無(wú)效的日歷值而無(wú)法獲取指定日歷對(duì)象的時(shí)間值。

add

public abstract void add(int field, int amount)

根據(jù)日歷的規(guī)則,在給定的日歷字段中添加或減去指定的時(shí)間量。 例如,要從日歷的當(dāng)前時(shí)間減去 5 天,可以通過(guò)調(diào)用實(shí)現(xiàn):

add(Calendar.DAY_OF_MONTH, -5).

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。
amount 要添加到字段的日期或時(shí)間量。

roll

public abstract void roll(int field, boolean up)

在給定時(shí)間字段上添加或減去(上/下)單個(gè)時(shí)間單位,而不更改更大的字段。 例如,要將當(dāng)前日期向上滾動(dòng)一天,您可以通過(guò)調(diào)用來(lái)實(shí)現(xiàn):

roll(Calendar.DATE, true). 在年份或 Calendar.YEAR 字段上滾動(dòng)時(shí),它將在 1 和調(diào)用 getMaximum(Calendar.YEAR) 返回的值之間滾動(dòng)年份值。 在月份或 Calendar.MONTH 字段上滾動(dòng)時(shí),日期等其他字段可能會(huì)發(fā)生沖突,需要更改。 例如,在 01/31/96 日期滾動(dòng)月份將導(dǎo)致 02/29/96。 當(dāng)滾動(dòng)一天中的小時(shí)或 Calendar.HOUR_OF_DAY 字段時(shí),它將滾動(dòng) 0 到 23 之間的小時(shí)值,該值從零開(kāi)始。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 時(shí)間字段。
up 指示指定時(shí)間字段的值是向上滾動(dòng)還是向下滾動(dòng)。 如果向上滾動(dòng)則使用 true,否則使用 false。

roll

public void roll(int field, int amount)

將指定的(簽名的)金額添加到指定的日歷字段而不更改更大的字段。 負(fù)數(shù)表示向下滾動(dòng)。

注意:Calendar 上的這個(gè)默認(rèn)實(shí)現(xiàn)只是重復(fù)調(diào)用滾動(dòng)一個(gè)單位的 roll() 版本。 這可能并不總是正確的。 例如,如果 DAY_OF_MONTH 字段為 31,則滾動(dòng)到二月會(huì)將其設(shè)置為 28。此函數(shù)的 GregorianCalendar 版本解決了這個(gè)問(wèn)題。 其他子類也應(yīng)該提供對(duì)這個(gè)函數(shù)的覆蓋,以做正確的事情。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。
amount 添加到日歷字段的簽名金額。

setTimeZone

public void setTimeZone(TimeZone value)

使用給定的時(shí)區(qū)值設(shè)置時(shí)區(qū)。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 給定的時(shí)區(qū)。

getTimeZone

public TimeZone getTimeZone()

獲取時(shí)區(qū)。

返回:

與此日歷關(guān)聯(lián)的時(shí)區(qū)對(duì)象。

setLenient

public void setLenient(boolean lenient)

指定日期/時(shí)間解釋是否寬松。 在寬松的解釋下,諸如“1996 年 2 月 942 日”這樣的日期將被視為等同于 1996 年 2 月 1 日之后的第 941 天。在嚴(yán)格(非寬松)的解釋下,這樣的日期將導(dǎo)致拋出異常。 默認(rèn)是寬松的。

參數(shù):

參數(shù)名稱 參數(shù)描述
lenient 如果要打開(kāi)寬松模式,則為 true; 如果要關(guān)閉它,則為 false。

isLenient

public boolean isLenient()

告訴日期/時(shí)間解釋是否寬松。

返回:

如果此日歷的解釋模式寬松,則為 true; 否則為false。

setFirstDayOfWeek

public void setFirstDayOfWeek(int value)

設(shè)置一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 給定的一周的第一天。

getFirstDayOfWeek

public int getFirstDayOfWeek()

獲取一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。

返回:

一周的第一天。

setMinimalDaysInFirstWeek

public void setMinimalDaysInFirstWeek(int value)

設(shè)置一年中第一周所需的最少天數(shù); 例如,如果第一周被定義為包含一年中第一個(gè)月的第一天的一周,則使用值 1 調(diào)用此方法。如果必須是整周,則使用值 7。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 一年中第一周所需的給定最少天數(shù)。

getMinimalDaysInFirstWeek

public int getMinimalDaysInFirstWeek()

獲取一年中第一周所需的最少天數(shù); 例如,如果第一周被定義為包含一年中第一個(gè)月的第一天的一周,則此方法返回 1。如果所需的最少天數(shù)必須是一整周,則此方法返回 7。

返回:

一年中第一周所需的最少天數(shù)。

isWeekDateSupported

public boolean isWeekDateSupported()

返回此日歷是否支持星期日期。

此方法的默認(rèn)實(shí)現(xiàn)返回 false。

返回:

如果此日歷支持星期日期,則為 true; 否則為false。

getWeekYear

public int getWeekYear()

返回此日歷表示的周年。 周年與周周期同步。 第一周的第一天是一年中一周的第一天。

此方法的默認(rèn)實(shí)現(xiàn)會(huì)引發(fā) UnsupportedOperationException。

返回:

本日歷的周年

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此日歷不支持任何周年編號(hào)。

setWeekDate

public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)

使用給定的日期說(shuō)明符設(shè)置此日歷的日期 - 星期幾、一年中的星期和星期幾。

與 set 方法不同,所有日歷字段和時(shí)間值都是在返回時(shí)計(jì)算的。

如果 weekOfYear 超出了 weekYear 中的有效周范圍,則在寬松模式下調(diào)整 weekYear 和 weekOfYear 值,或者在非寬松模式下拋出 IllegalArgumentException。

此方法的默認(rèn)實(shí)現(xiàn)會(huì)引發(fā) UnsupportedOperationException。

參數(shù):

參數(shù)名稱 參數(shù)描述
weekYear 一周年
weekOfYear 基于 weekYear 的周數(shù)
dayOfWeek 星期幾值:DAY_OF_WEEK 字段的常量之一:SUNDAY, ..., SATURDAY。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果任何給定的日期說(shuō)明符無(wú)效或任何日歷字段與非寬松模式下的給定日期說(shuō)明符不一致
UnsupportedOperationException 如果此日歷不支持任何周年編號(hào)。

getWeeksInWeekYear

public int getWeeksInWeekYear()

返回此日歷表示的一周年中的周數(shù)。

此方法的默認(rèn)實(shí)現(xiàn)會(huì)引發(fā) UnsupportedOperationException。

返回:

一周中的周數(shù)。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此日歷不支持任何周年編號(hào)。

getMinimum

public abstract int getMinimum(int field)

返回此 Calendar 實(shí)例的給定日歷字段的最小值。 最小值定義為 get 方法為任何可能的時(shí)間值返回的最小值。 最小值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。

返回:

給定日歷字段的最小值。

getMaximum

public abstract int getMaximum(int field)

返回此 Calendar 實(shí)例的給定日歷字段的最大值。 最大值定義為 get 方法為任何可能的時(shí)間值返回的最大值。 最大值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。

返回:

給定日歷字段的最大值。

getGreatestMinimum

public abstract int getGreatestMinimum(int field)

返回此 Calendar 實(shí)例的給定日歷字段的最大最小值。 最高最小值定義為 getActualMinimum(int) 針對(duì)任何可能的時(shí)間值返回的最大值。 最大最小值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。

返回:

給定日歷字段的最高最小值。

getLeastMaximum

public abstract int getLeastMaximum(int field)

返回此 Calendar 實(shí)例的給定日歷字段的最低最大值。 最低最大值定義為 getActualMaximum(int) 為任何可能的時(shí)間值返回的最小值。 最小最大值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。 例如,公歷系統(tǒng)的日歷為 DAY_OF_MONTH 字段返回 28,因?yàn)?28 日是該日歷中最短月份的最后一天,即普通年份的二月。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段。

返回:

給定日歷字段的最低最大值。

getActualMinimum

public int getActualMinimum(int field)

在給定此日歷的時(shí)間值的情況下,返回指定日歷字段可能具有的最小值。

此方法的默認(rèn)實(shí)現(xiàn)使用迭代算法來(lái)確定日歷字段的實(shí)際最小值。 如果可能,子類應(yīng)該用更有效的實(shí)現(xiàn)來(lái)覆蓋它——在許多情況下,它們可以簡(jiǎn)單地返回 getMinimum()。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段

返回:

此日歷的時(shí)間值的給定日歷字段的最小值

getActualMaximum

public int getActualMaximum(int field)

在給定此日歷的時(shí)間值的情況下,返回指定日歷字段可以具有的最大值。 例如,MONTH 字段的實(shí)際最大值在某些年份為 12,而在希伯來(lái)日歷系統(tǒng)中其他年份為 13。

此方法的默認(rèn)實(shí)現(xiàn)使用迭代算法來(lái)確定日歷字段的實(shí)際最大值。 如果可能,子類應(yīng)該用更有效的實(shí)現(xiàn)來(lái)覆蓋它。

參數(shù):

參數(shù)名稱 參數(shù)描述
field 日歷字段

返回:

此日歷的時(shí)間值的給定日歷字段的最大值

clone

public Object clone()

創(chuàng)建并返回此對(duì)象的副本。

覆蓋:

在類 Object 中克隆

返回:

此對(duì)象的副本。

toString

public String toString()

返回此日歷的字符串表示形式。 此方法僅用于調(diào)試目的,返回字符串的格式可能因?qū)崿F(xiàn)而異。 返回的字符串可能為空但不能為空。

覆蓋:

類 Object 中的 toString

返回:

此日歷的字符串表示形式。

toInstant

public final Instant toInstant()

將此對(duì)象轉(zhuǎn)換為 Instant。

轉(zhuǎn)換會(huì)創(chuàng)建一個(gè) Instant,它表示時(shí)間線上與此日歷相同的點(diǎn)。

返回:

表示時(shí)間線上同一點(diǎn)的瞬間

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)