W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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ò)以下方式解決:
日期或時(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ù) | 描述 |
---|---|---|
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)境的日歷。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
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 |
public static final int ALL_STYLES
getDisplayNames 的樣式說(shuō)明符,指示所有樣式中的名稱,例如“January”和“Jan”。
public static final int AM
AM_PM 字段的值,指示一天中從午夜到正午之前的時(shí)段。
public static final int AM_PM
get 和 set 的字段編號(hào),指示 HOUR 是在中午之前還是之后。 例如,在晚上 10:04:15.250,AM_PM 是 PM。
public static final int APRIL
MONTH 字段的值,指示公歷和儒略歷中一年中的第四個(gè)月。
public static final int AUGUST
MONTH 字段的值,指示公歷和儒略歷中一年中的第 8 個(gè)月。
public static final int DATE
get 和 set 的字段編號(hào),指示月份中的哪一天。 這是 DAY_OF_MONTH 的同義詞。 該月的第一天的值為 1。
public static final int DAY_OF_MONTH
get 和 set 的字段編號(hào),指示月份中的哪一天。 這是 DATE 的同義詞。 該月的第一天的值為 1。
public static final int DAY_OF_WEEK
get 和 set 的字段編號(hào),指示星期幾。 此字段采用 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY 值。
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é)束重疊。
public static final int DAY_OF_YEAR
get 和 set 的字段編號(hào),表示當(dāng)前年份中的天數(shù)。 一年的第一天的值為 1。
public static final int DECEMBER
MONTH 字段的值,指示公歷和儒略歷中一年中的第十二個(gè)月。
public static final int DST_OFFSET
get 和 set 的字段編號(hào),以毫秒為單位指示夏令時(shí)偏移量。
如果 TimeZone 實(shí)現(xiàn)子類支持歷史夏令時(shí)時(shí)間表更改,則此字段反映此日歷的時(shí)區(qū)的正確夏令時(shí)偏移值。
public static final int ERA
用于表示時(shí)代的 get 和 set 字段編號(hào),例如儒略歷中的 AD 或 BC。 這是一個(gè)特定于日歷的值。
public static final int FEBRUARY
MONTH 字段的值,指示公歷和儒略歷中一年中的第二個(gè)月。
public static final int FIELD_COUNT
get 和 set 識(shí)別的不同字段的數(shù)量。 字段編號(hào)范圍為 0..FIELD_COUNT-1。
public static final int FRIDAY
表示星期五的 DAY_OF_WEEK 字段的值。
public static final int HOUR
get 和 set 的字段編號(hào),指示上午或下午的時(shí)間。 HOUR 用于 12 小時(shí)制 (0 - 11)。 中午和午夜用 0 表示,而不是用 12 表示。例如,在晚上 10:04:15.250,HOUR 是 10。
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。
public static final int JANUARY
MONTH 字段的值,指示公歷和儒略歷中一年中的第一個(gè)月。
public static final int JULY
MONTH 字段的值,指示公歷和儒略歷中一年中的第七個(gè)月。
public static final int JUNE
MONTH 字段的值,指示公歷和儒略歷中一年中的第 6 個(gè)月。
public static final int LONG
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 LONG_FORMAT。
public static final int LONG_FORMAT
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的長(zhǎng)名稱。
public static final int LONG_STANDALONE
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的長(zhǎng)名稱,例如作為日歷標(biāo)題的月份名稱。
public static final int MARCH
MONTH 字段的值,指示公歷和儒略歷中一年中的第三個(gè)月。
public static final int MAY
MONTH 字段的值,指示公歷和儒略歷中一年中的第五個(gè)月。
public static final int MILLISECOND
get 和 set 的字段編號(hào),指示秒內(nèi)的毫秒。 例如,在晚上 10:04:15.250,MILLISECOND 是 250。
public static final int MINUTE
get 和 set 的字段編號(hào),指示一小時(shí)內(nèi)的分鐘。 例如,在晚上 10:04:15.250,MINUTE 為 4。
public static final int MONDAY
DAY_OF_WEEK 字段的值表示星期一。
public static final int MONTH
get 和 set 的字段編號(hào),指示月份。 這是特定于日歷的值。 公歷和儒略歷中的第一個(gè)月是 JANUARY,即 0; 最后一個(gè)取決于一年中的月數(shù)。
public static final int NARROW_FORMAT
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的窄名稱。 窄名稱通常是單個(gè)字符串,例如星期一的“M”。
public static final int NARROW_STANDALONE
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符分別指示窄名稱。 窄名稱通常是單個(gè)字符串,例如星期一的“M”。
public static final int NOVEMBER
MONTH 字段的值,指示公歷和儒略歷中一年中的第十一個(gè)月。
public static final int OCTOBER
MONTH 字段的值,指示公歷和儒略歷中一年中的第十個(gè)月。
public static final int PM
AM_PM 字段的值,指示一天中從中午到午夜之前的時(shí)段。
public static final int SATURDAY
表示星期六的 DAY_OF_WEEK 字段的值。
public static final int SECOND
get 和 set 的字段編號(hào),指示一分鐘內(nèi)的秒數(shù)。 例如,在晚上 10:04:15.250,SECOND 是 15。
public static final int SEPTEMBER
MONTH 字段的值,指示公歷和儒略歷中一年中的第 9 個(gè)月。
public static final int SHORT
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,等效于 SHORT_FORMAT。
public static final int SHORT_FORMAT
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示用于格式的短名稱。
public static final int SHORT_STANDALONE
getDisplayName 和 getDisplayNames 的樣式說(shuō)明符,指示獨(dú)立使用的短名稱,例如作為日歷標(biāo)題的月份縮寫(xiě)。
public static final int SUNDAY
表示星期日的 DAY_OF_WEEK 字段的值。
public static final int THURSDAY
表示星期四的 DAY_OF_WEEK 字段的值。
public static final int TUESDAY
表示星期二的 DAY_OF_WEEK 字段的值。
public static final int UNDECIMBER
MONTH 字段的值表示一年中的第十三個(gè)月。 盡管 GregorianCalendar 不使用此值,但農(nóng)歷使用。
public static final int WEDNESDAY
表示星期三的 DAY_OF_WEEK 字段的值。
public static final int WEEK_OF_MONTH
get 和 set 的字段編號(hào),指示當(dāng)前月份中的周數(shù)。 該月的第一周,由 getFirstDayOfWeek() 和 getMinimalDaysInFirstWeek() 定義,值為 1。子類定義該月第一周前幾天的 WEEK_OF_MONTH 值。
public static final int WEEK_OF_YEAR
get 和 set 的字段編號(hào),表示當(dāng)前年份中的周數(shù)。 一年中的第一周,由 getFirstDayOfWeek() 和 getMinimalDaysInFirstWeek() 定義,值為 1。子類定義一年中第一周前幾天的 WEEK_OF_YEAR 值。
public static final int YEAR
get 和 set 的字段編號(hào),指示年份。 這是一個(gè)特定于日歷的值; 請(qǐng)參閱子類文檔。
public static final int ZONE_OFFSET
get 和 set 的字段編號(hào),指示與 GMT 的原始偏移量(以毫秒為單位)。
如果 TimeZone 實(shí)現(xiàn)子類支持歷史 GMT 偏移更改,則此字段反映此日歷的時(shí)區(qū)的正確 GMT 偏移值。
protected boolean areFieldsSet
如果 fields[] 與當(dāng)前設(shè)置的時(shí)間同步,則為true。 如果為 false,則下一次獲取字段值的嘗試將強(qiáng)制從當(dāng)前時(shí)間值重新計(jì)算所有字段。
protected int[] fields
此日歷當(dāng)前設(shè)置時(shí)間的日歷字段值。 這是一個(gè) FIELD_COUNT 整數(shù)數(shù)組,索引值為 ERA 到 DST_OFFSET。
protected boolean[] isSet
指示是否設(shè)置了日歷的指定日歷字段的標(biāo)志。 新對(duì)象沒(méi)有設(shè)置字段。 在第一次調(diào)用生成字段的方法之后,它們都保持設(shè)置。 這是一個(gè) FIELD_COUNT 布爾數(shù)組,索引值 ERA 到 DST_OFFSET。
protected boolean isTimeSet
如果時(shí)間值有效,則為true。 通過(guò)更改字段 [] 的項(xiàng)目使時(shí)間無(wú)效。
protected long time
此日歷的當(dāng)前設(shè)置時(shí)間,以 1970 年 1 月 1 日 0:00:00 GMT 之后的毫秒數(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)境的日歷。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
zone | 要使用的時(shí)區(qū) |
aLocale | 周數(shù)據(jù)的語(yǔ)言環(huán)境 |
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í)間。
返回:
日歷。
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ū) |
返回:
日歷。
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)境 |
返回:
日歷。
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)境 |
返回:
日歷。
public static Locale[] getAvailableLocales()
返回此類的 getInstance 方法可以為其返回本地化實(shí)例的所有語(yǔ)言環(huán)境的數(shù)組。 返回的數(shù)組必須至少包含一個(gè)等于 Locale.US 的 Locale 實(shí)例。
返回:
本地化 Calendar 實(shí)例可用的語(yǔ)言環(huán)境數(shù)組。
protected abstract void computeTime()
將 [fields] 中的當(dāng)前日歷字段值轉(zhuǎn)換為毫秒時(shí)間值 time。
protected abstract void computeFields()
將當(dāng)前毫秒時(shí)間值 time 轉(zhuǎn)換為 [fields] 中的日歷字段值。 這允許您將日歷字段值與為日歷設(shè)置的新時(shí)間同步。 時(shí)間不先重新計(jì)算; 要重新計(jì)算時(shí)間,然后是字段,請(qǐng)調(diào)用 complete() 方法。
public final Date getTime()
返回一個(gè) Date 對(duì)象,表示此日歷的時(shí)間值(從 Epoch 開(kāi)始的毫秒偏移量)。
返回:
表示時(shí)間值的日期。
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 | 給定的日期。 |
public long getTimeInMillis()
返回此日歷的時(shí)間值(以毫秒為單位)。
返回:
當(dāng)前時(shí)間,從紀(jì)元開(kāi)始的 UTC 毫秒。
public void setTimeInMillis(long millis)
根據(jù)給定的 long 值設(shè)置此日歷的當(dāng)前時(shí)間。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
millis | 從紀(jì)元開(kāi)始的新時(shí)間(以 UTC 毫秒為單位)。 |
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)。 |
protected final int internalGet(int field)
返回給定日歷字段的值。 此方法不涉及字段值的規(guī)范化或驗(yàn)證。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 給定的日歷字段。 |
返回:
給定日歷字段的值。
public void set(int field, int value)
將給定的日歷字段設(shè)置為給定的值。 無(wú)論寬大模式如何,此方法都不會(huì)解釋該值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 給定的日歷字段。 |
value | 要為給定日歷字段設(shè)置的值。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
ArrayIndexOutOfBoundsException | 如果指定的字段超出范圍(字段 < 0 || 字段 >= FIELD_COUNT)。 在非寬松模式下。 |
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 日歷字段的值。 |
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 日歷字段的值。 |
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 日歷字段的值。 |
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。
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 | 要清除的日歷字段。 |
public final boolean isSet(int field)
確定給定的日歷字段是否設(shè)置了值,包括該值已由 get 方法調(diào)用觸發(fā)的內(nèi)部字段計(jì)算設(shè)置的情況。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 要測(cè)試的日歷字段 |
返回:
如果給定的日歷字段設(shè)置了值,則為 true; 否則為false。
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)境為空 |
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)境為空 |
protected void complete()
填寫(xiě)日歷字段中任何未設(shè)置的字段。 首先,如果尚未從日歷字段值計(jì)算時(shí)間值(與 Epoch 的毫秒偏移量),則調(diào)用 computeTime() 方法。 然后,調(diào)用 computeFields() 方法來(lái)計(jì)算所有日歷字段值。
public static SetString getAvailableCalendarTypes()
返回一個(gè)不可修改的 Set,其中包含運(yùn)行時(shí)環(huán)境中 Calendar 支持的所有日歷類型。 可用的日歷類型可用于 Unicode 語(yǔ)言環(huán)境擴(kuò)展。 返回的 Set 至少包含“gregory”。 日歷類型不包括別名,例如“gregory”的“gregorian”。
返回:
一個(gè)不可修改的 Set 包含所有可用的日歷類型
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í)例的類名
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。
public int hashCode()
返回此日歷的哈希碼。
覆蓋:
類 Object 中的 hashCode
返回:
此對(duì)象的哈希碼值。
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。
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。
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í)間值。 |
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í)間量。 |
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。 |
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 | 添加到日歷字段的簽名金額。 |
public void setTimeZone(TimeZone value)
使用給定的時(shí)區(qū)值設(shè)置時(shí)區(qū)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | 給定的時(shí)區(qū)。 |
public TimeZone getTimeZone()
獲取時(shí)區(qū)。
返回:
與此日歷關(guān)聯(lián)的時(shí)區(qū)對(duì)象。
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。 |
public boolean isLenient()
告訴日期/時(shí)間解釋是否寬松。
返回:
如果此日歷的解釋模式寬松,則為 true; 否則為false。
public void setFirstDayOfWeek(int value)
設(shè)置一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | 給定的一周的第一天。 |
public int getFirstDayOfWeek()
獲取一周的第一天是什么; 例如,美國(guó)的星期日,法國(guó)的星期一。
返回:
一周的第一天。
public void setMinimalDaysInFirstWeek(int value)
設(shè)置一年中第一周所需的最少天數(shù); 例如,如果第一周被定義為包含一年中第一個(gè)月的第一天的一周,則使用值 1 調(diào)用此方法。如果必須是整周,則使用值 7。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
value | 一年中第一周所需的給定最少天數(shù)。 |
public int getMinimalDaysInFirstWeek()
獲取一年中第一周所需的最少天數(shù); 例如,如果第一周被定義為包含一年中第一個(gè)月的第一天的一周,則此方法返回 1。如果所需的最少天數(shù)必須是一整周,則此方法返回 7。
返回:
一年中第一周所需的最少天數(shù)。
public boolean isWeekDateSupported()
返回此日歷是否支持星期日期。
此方法的默認(rèn)實(shí)現(xiàn)返回 false。
返回:
如果此日歷支持星期日期,則為 true; 否則為false。
public int getWeekYear()
返回此日歷表示的周年。 周年與周周期同步。 第一周的第一天是一年中一周的第一天。
此方法的默認(rèn)實(shí)現(xiàn)會(huì)引發(fā) UnsupportedOperationException。
返回:
本日歷的周年
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此日歷不支持任何周年編號(hào)。 |
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)。 |
public int getWeeksInWeekYear()
返回此日歷表示的一周年中的周數(shù)。
此方法的默認(rèn)實(shí)現(xiàn)會(huì)引發(fā) UnsupportedOperationException。
返回:
一周中的周數(shù)。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此日歷不支持任何周年編號(hào)。 |
public abstract int getMinimum(int field)
返回此 Calendar 實(shí)例的給定日歷字段的最小值。 最小值定義為 get 方法為任何可能的時(shí)間值返回的最小值。 最小值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最小值。
public abstract int getMaximum(int field)
返回此 Calendar 實(shí)例的給定日歷字段的最大值。 最大值定義為 get 方法為任何可能的時(shí)間值返回的最大值。 最大值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最大值。
public abstract int getGreatestMinimum(int field)
返回此 Calendar 實(shí)例的給定日歷字段的最大最小值。 最高最小值定義為 getActualMinimum(int) 針對(duì)任何可能的時(shí)間值返回的最大值。 最大最小值取決于實(shí)例的日歷系統(tǒng)特定參數(shù)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
field | 日歷字段。 |
返回:
給定日歷字段的最高最小值。
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 | 日歷字段。 |
返回:
給定日歷字段的最低最大值。
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í)間值的給定日歷字段的最小值
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í)間值的給定日歷字段的最大值
public Object clone()
創(chuàng)建并返回此對(duì)象的副本。
覆蓋:
在類 Object 中克隆
返回:
此對(duì)象的副本。
public String toString()
返回此日歷的字符串表示形式。 此方法僅用于調(diào)試目的,返回字符串的格式可能因?qū)崿F(xiàn)而異。 返回的字符串可能為空但不能為空。
覆蓋:
類 Object 中的 toString
返回:
此日歷的字符串表示形式。
public final Instant toInstant()
將此對(duì)象轉(zhuǎn)換為 Instant。
轉(zhuǎn)換會(huì)創(chuàng)建一個(gè) Instant,它表示時(shí)間線上與此日歷相同的點(diǎn)。
返回:
表示時(shí)間線上同一點(diǎn)的瞬間
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: