|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.Calendar
public abstract class Calendar
Calendar
類別是一個抽象類別,它為特定瞬間與一組諸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日曆欄位
之間的轉換提供了一些方法,並為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高里歷)的偏移量。
該類別還為實作包範圍外的具體日曆系統提供了其他欄位和方法。這些欄位和方法被定義為 protected
。
與其他語言環境敏感類別一樣,Calendar
提供了一個類別方法 getInstance
,以獲得此型別的一個通用的物件。Calendar
的 getInstance
方法返回一個 Calendar
物件,其日曆欄位已由當前日期和時間初始化:
Calendar rightNow = Calendar.getInstance();
Calendar
物件能夠產生為特定語言和日曆樣式實作日期-時間格式化所需的所有日曆欄位值,例如,日語-格裡高裡歷,日語-傳統日曆。Calendar
定義了某些日曆欄位返回值的範圍,以及這些值的含義。例如,對於所有日曆,日曆系統第一個月的值是 MONTH == JANUARY
。其他值是由具體子類別(例如 ERA
)定義的。有關此內容的細節,請參閱每個欄位的文檔和子類別文檔。
可以通過調用 set
方法來設置日曆欄位值。在需要計算時間值(距歷元所經過的毫秒)或日曆欄位值之前,不會解釋 Calendar
中的所有欄位值設置。調用 get
、getTimeInMillis
、getTime
、add
和 roll
涉及此類別計算。
Calendar
有兩種解釋日曆欄位的網要,即 lenient 和 non-lenient。當 Calendar
處於 lenient 網要時,它可接受比它所產生的日曆欄位範圍更大範圍內的值。當 Calendar
重新計算日曆欄位值,以便由 get()
返回這些值時,所有日曆欄位都被標準化。例如,lenient 網要下的 GregorianCalendar
將 MONTH == JANUARY
、DAY_OF_MONTH == 32
解釋為 February 1。
當 Calendar
處於 non-lenient 網要時,如果其日曆欄位中存在任何不一致性,它都會拋出一個異常。例如,GregorianCalendar
總是在 1 與月份的長度之間產生 DAY_OF_MONTH
值。如果已經設置了任何超出範圍的欄位值,那麼在計算時間或日曆欄位值時,處於 non-lenient 網要下的 GregorianCalendar
會拋出一個異常。
Calendar
使用兩個參數定義了特定於語言環境的 7 天制星期:星期的第一天和第一個星期中的最小一天(從 1 到 7)。這些數字取自建構 Calendar
時的語言環境資源資料。還可以通過為其設置值的方法來顯式地指定它們。
在設置或獲得 WEEK_OF_MONTH
或 WEEK_OF_YEAR
欄位時,Calendar
必須確定一個月或一年的第一個星期,以此作為參考點。一個月或一年的第一個星期被確定為開始於 getFirstDayOfWeek()
的最早七天,它最少包含那一個月或一年的 getMinimalDaysInFirstWeek()
天數。第一個星期之前的各星期編號為 ...、-1、0;之後的星期編號為 2、3、...。注意,get()
返回的標準化編號方式可能有所不同。例如,特定 Calendar
子類別可能將某一年第 1 個星期之前的那個星期指定為前一年的第 n
個星期。
Calendar
將解析日曆欄位值,以便用以下方式確定日期和時間。
如果日曆欄位值中存在任何衝突,則 Calendar
將為最近設置的日曆欄位提供優先權。以下是日曆欄位的預設組合。將使用由最近設置的單個欄位所確定的最近組合。
對於時間欄位: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
HOUR_OF_DAY AM_PM + HOUR
如果在選定的欄位組合中,還有尚未設置值的任一日曆欄位,那麼 Calendar
將使用其預設值。每個欄位的預設值可能依據具體的日曆系統而有所不同。例如,在 GregorianCalendar
中,欄位的預設值與歷元起始部分的欄位值相同:即 YEAR = 1970
、MONTH = JANUARY
、DAY_OF_MONTH = 1
,等等。
註: 對於某些特別時間的解釋可能會有某些歧義,可以用下列方式解決:
日期或時間格式字元串不是日曆定義的一部分,因為在運行時,使用者必須能夠修改或覆寫它們。可以使用 DateFormat
格式化日期。
set()
、add()
和 roll()
。
set(f, value)
將日曆欄位 f
更改為 value
。此外,它設置了一個內部成員變數,以指示日曆欄位 f
已經被更改。儘管日曆欄位 f
是立即更改的,但是直到下次調用 get()
、getTime()
、getTimeInMillis()
、add()
或 roll()
時才會重新計算日曆的時間值(以毫秒為單位)。因此,多次調用 set()
不會觸發多次不必要的計算。使用 set()
更改日曆欄位的結果是,其他日曆欄位也可能發生更改,這取決於日曆欄位、日曆欄位值和日曆系統。此外,在重新計算日曆欄位之後,get(f)
沒必要通過調用 set
方法返回 value
集合。具體細節是通過具體的日曆類別確定的。
範例:假定 GregorianCalendar
最初被設置為 1999 年 8 月 31 日。調用 set(Calendar.MONTH, Calendar.SEPTEMBER)
將該日期設置為 1999 年 9 月 31 日。如果隨後調用 getTime()
,那麼這是解析 1999 年 10 月 1 日的一個暫時內部表示。但是,在調用 getTime()
之前調用 set(Calendar.DAY_OF_MONTH, 30)
會將該日期設置為 1999 年 9 月 30 日,因為在調用 set()
之後沒有發生重新計算。
add(f, delta)
將 delta
添加到 f
欄位中。這等同於調用 set(f, get(f) + delta)
,但要帶以下兩個調整:
Add 規則 1。調用後
f
欄位的值減去調用前f
欄位的值等於delta
,以欄位f
中發生的任何溢位為模。溢位發生在欄位值超出其範圍時,結果,下一個更大的欄位會遞增或遞減,並將欄位值調整回其範圍內。Add 規則 2。如果期望某一個更小的欄位是不變的,但讓它等於以前的值是不可能的,因為在欄位
f
發生更改之後,或者在出現其他約束之後,比如時區偏移量發生更改,它的最大值和最小值也在發生更改,然後它的值被調整為盡量接近於所期望的值。更小的欄位表示一個更小的時間單元。HOUR
是一個比DAY_OF_MONTH
小的欄位。對於不期望是不變欄位的更小欄位,無需進行任何調整。日曆系統會確定期望不變的那些欄位。
此外,與 set()
不同,add()
強迫日曆系統立即重新計算日曆的毫秒數和所有欄位。
範例:假定 GregorianCalendar
最初被設置為 1999 年 8 月 31 日。調用 add(Calendar.MONTH, 13)
將日曆設置為 2000 年 9 月 30 日。Add 規則 1 將 MONTH
欄位設置為 September,因為向 August 添加 13 個月得出的就是下一年的 September。因為在 GregorianCalendar
中,DAY_OF_MONTH
不可能是 9 月 31 日,所以 add 規則 2 將 DAY_OF_MONTH
設置為 30,即最可能的值。儘管它是一個更小的欄位,但不能根據規則 2 調整 DAY_OF_WEEK
,因為在 GregorianCalendar
中的月份發生變化時,該值也需要發生變化。
roll(f, delta)
將 delta
添加到 f
欄位中,但不更改更大的欄位。這等同於調用 add(f, delta)
,但要帶以下調整:
Roll 規則。在完成調用後,更大的欄位無變化。更大的欄位表示一個更大的時間單元。
DAY_OF_MONTH
是一個比HOUR
大的欄位。
範例:請參閱 GregorianCalendar.roll(int, int)
。
使用模型。為了說明理解 add()
和 roll()
的行為,假定有一個使用者介面元件,它帶有用於月、日、年和底層 GregorianCalendar
的遞增或遞減按鈕。如果從介面上讀取的日期為 1999 年 1 月 31 日,並且使用者按下月份的遞增按鈕,那麼應該得到什麼?如果底層實作使用 set()
,那麼可以將該日期讀為 1999 年 3 月 3 日。更好的結果是 1999 年 2 月 28 日。此外,如果使用者再次按下月份的遞增按鈕,那麼該日期應該讀為 1999 年 3 月 31 日,而不是 1999 年 3 月 28 日。通過保存原始日期並使用 add()
或 roll()
,根據是否會影響更大的欄位,使用者介面可以像大多數使用者所期望的那樣運行。
System.currentTimeMillis()
,
Date
,
GregorianCalendar
,
TimeZone
,
DateFormat
,
序列化表格欄位摘要 | |
---|---|
static int |
ALL_STYLES
指示所有樣式名稱的 getDisplayNames 的樣式說明符,比如 "January" 和 "Jan"。 |
static int |
AM
指示從午夜到中午之前這段時間的 AM_PM 欄位值。 |
static int |
AM_PM
get 和 set 的欄位數字,指示 HOUR 是在中午之前還是在中午之後。 |
static int |
APRIL
指示在格里高里歷和羅馬儒略歷中一年中第四個月的 MONTH 欄位值。 |
protected boolean |
areFieldsSet
如果 fields[] 與當前的設置時間同步,則返回 true。 |
static int |
AUGUST
指示在格里高里歷和羅馬儒略歷中一年中第八個月的 MONTH 欄位值。 |
static int |
DATE
get 和 set 的欄位數字,指示一個月中的某天。 |
static int |
DAY_OF_MONTH
get 和 set 的欄位數字,指示一個月中的某天。 |
static int |
DAY_OF_WEEK
get 和 set 的欄位數字,指示一個星期中的某天。 |
static int |
DAY_OF_WEEK_IN_MONTH
get 和 set 的欄位數字,指示當前月中的第幾個星期。 |
static int |
DAY_OF_YEAR
get 和 set 的欄位數字,指示當前年中的天數。 |
static int |
DECEMBER
指示在格里高里歷和羅馬儒略歷中一年中第十二個月的 MONTH 欄位值。 |
static int |
DST_OFFSET
get 和 set 的欄位數字,以毫秒為單位指示夏令時的偏移量。 |
static int |
ERA
指示年代的 get 和 set 的欄位數字,比如羅馬儒略歷中的 AD 或 BC。 |
static int |
FEBRUARY
指示在格里高里歷和羅馬儒略歷中一年中第二個月的 MONTH 欄位值。 |
static int |
FIELD_COUNT
get 和 set 可識別的不同欄位的數量。 |
protected int[] |
fields
此日曆當前設置時間的日曆欄位值。 |
static int |
FRIDAY
指示 Friday 的 DAY_OF_WEEK 欄位值。 |
static int |
HOUR
get 和 set 的欄位數字,指示上午或下午的小時。 |
static int |
HOUR_OF_DAY
get 和 set 的欄位數字,指示一天中的小時。 |
protected boolean[] |
isSet
通知是否設置了該日曆某一指定日曆欄位的標誌。 |
protected boolean |
isTimeSet
如果 time 值是一個有效值,則返回 true。 |
static int |
JANUARY
指示在格里高里歷和羅馬儒略歷中一年中第一個月的 MONTH 欄位值。 |
static int |
JULY
指示在格里高里歷和羅馬儒略歷中一年中第七個月的 MONTH 欄位值。 |
static int |
JUNE
指示在格里高里歷和羅馬儒略歷中一年中第六個月的 MONTH 欄位值。 |
static int |
LONG
指示長名稱的 getDisplayName 和 getDisplayNames 的樣式說明符,比如 "January"。 |
static int |
MARCH
指示在格里高里歷和羅馬儒略歷中一年中第三個月的 MONTH 欄位值。 |
static int |
MAY
指示在格里高里歷和羅馬儒略歷中一年中第五個月的 MONTH 欄位值。 |
static int |
MILLISECOND
get 和 set 的欄位數字,指示一秒中的毫秒。 |
static int |
MINUTE
get 和 set 的欄位數字,指示一小時中的分鐘。 |
static int |
MONDAY
指示 Monday 的 DAY_OF_WEEK 欄位值。 |
static int |
MONTH
指示月份的 get 和 set 的欄位數字。 |
static int |
NOVEMBER
指示在格里高里歷和羅馬儒略歷中一年中第十一個月的 MONTH 欄位值。 |
static int |
OCTOBER
指示在格里高里歷和羅馬儒略歷中一年中第十個月的 MONTH 欄位值。 |
static int |
PM
指示從中午到午夜之前這段時間的 AM_PM 欄位值。 |
static int |
SATURDAY
指示 Saturday 的 DAY_OF_WEEK 欄位值。 |
static int |
SECOND
get 和 set 的欄位數字,指示一分鐘中的秒。 |
static int |
SEPTEMBER
指示在格里高里歷和羅馬儒略歷中一年中第九個月的 MONTH 欄位值。 |
static int |
SHORT
指示短名稱的 getDisplayName 和 getDisplayNames 的樣式說明符,比如 "Jan"。 |
static int |
SUNDAY
指示 Sunday 的 DAY_OF_WEEK 欄位值。 |
static int |
THURSDAY
指示 Thursday 的 DAY_OF_WEEK 欄位值。 |
protected long |
time
日曆的當前設置時間,以毫秒為單位,表示自格林威治標準時間 1970 年 1月 1 日 0:00:00 後經過的時間。 |
static int |
TUESDAY
指示 Tuesday 的 DAY_OF_WEEK 欄位值。 |
static int |
UNDECIMBER
指示一年中第十三個月的 MONTH 欄位值。 |
static int |
WEDNESDAY
指示 Wednesday 的 DAY_OF_WEEK 欄位值。 |
static int |
WEEK_OF_MONTH
get 和 set 的欄位數字,指示當前月中的星期數。 |
static int |
WEEK_OF_YEAR
get 和 set 的欄位數字,指示當前年中的星期數。 |
static int |
YEAR
指示年的 get 和 set 的欄位數字。 |
static int |
ZONE_OFFSET
get 和 set 的欄位數字,以毫秒為單位指示距 GMT 的大致偏移量。 |
建構子摘要 | |
---|---|
protected |
Calendar()
建構一個帶有預設時區和語言環境的 Calendar。 |
protected |
Calendar(TimeZone zone,
Locale aLocale)
建構一個帶有指定時區和語言環境的 Calendar。 |
方法摘要 | |
---|---|
abstract void |
add(int field,
int amount)
根據日曆的規則,為給定的日曆欄位添加或減去指定的時間量。 |
boolean |
after(Object when)
判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之後,返回判斷結果。 |
boolean |
before(Object when)
判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結果。 |
void |
clear()
將此 Calendar 的所日曆欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。 |
void |
clear(int field)
將此 Calendar 的給定日曆欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。 |
Object |
clone()
創建並返回此物件的一個副本。 |
int |
compareTo(Calendar anotherCalendar)
比較兩個 Calendar 物件表示的時間值(從歷元至現在的毫秒偏移量)。 |
protected void |
complete()
填充日曆欄位中所有未設置的欄位。 |
protected abstract void |
computeFields()
將當前毫秒時間值 time 轉換為 fields[] 中的日曆欄位值。 |
protected abstract void |
computeTime()
將 fields[] 中的當前日曆欄位值轉換為毫秒時間值 time 。 |
boolean |
equals(Object obj)
將此 Calendar 與指定 Object 比較。 |
int |
get(int field)
返回給定日曆欄位的值。 |
int |
getActualMaximum(int field)
給定此 Calendar 的時間值,返回指定日曆欄位可能擁有的最大值。 |
int |
getActualMinimum(int field)
給定此 Calendar 的時間值,返回指定日曆欄位可能擁有的最小值。 |
static Locale[] |
getAvailableLocales()
返回所有語言環境的陣列,此類別的 getInstance 方法可以為其返回本地化的實例。 |
String |
getDisplayName(int field,
int style,
Locale locale)
返回給定 style 和 locale 下的日曆 field 值的字元串表示形式。 |
Map<String,Integer> |
getDisplayNames(int field,
int style,
Locale locale)
返回給定 style 和 locale 下包含日曆 field 所有名稱的 Map 及其相應欄位值。 |
int |
getFirstDayOfWeek()
獲取一星期的第一天;例如,在美國,這一天是 SUNDAY ,而在法國,這一天是 MONDAY 。 |
abstract int |
getGreatestMinimum(int field)
返回此 Calendar 實例給定日曆欄位的最高的最小值。 |
static Calendar |
getInstance()
使用預設時區和語言環境獲得一個日曆。 |
static Calendar |
getInstance(Locale aLocale)
使用預設時區和指定語言環境獲得一個日曆。 |
static Calendar |
getInstance(TimeZone zone)
使用指定時區和預設語言環境獲得一個日曆。 |
static Calendar |
getInstance(TimeZone zone,
Locale aLocale)
使用指定時區和語言環境獲得一個日曆。 |
abstract int |
getLeastMaximum(int field)
返回此 Calendar 實例給定日曆欄位的最低的最大值。 |
abstract int |
getMaximum(int field)
返回此 Calendar 實例給定日曆欄位的最大值。 |
int |
getMinimalDaysInFirstWeek()
獲取一年中第一個星期所需的最少天數,例如,如果定義第一個星期包含一年第一個月的第一天,則此方法將返回 1。 |
abstract int |
getMinimum(int field)
返回此 Calendar 實例給定日曆欄位的最小值。 |
Date |
getTime()
返回一個表示此 Calendar 時間值(從歷元至現在的毫秒偏移量)的 Date 物件。 |
long |
getTimeInMillis()
返回此 Calendar 的時間值,以毫秒為單位。 |
TimeZone |
getTimeZone()
獲得時區。 |
int |
hashCode()
返回該此日曆的雜湊碼。 |
protected int |
internalGet(int field)
返回給定日曆欄位的值。 |
boolean |
isLenient()
判斷日期/時間的解釋是否為寬鬆的。 |
boolean |
isSet(int field)
確定給定日曆欄位是否已經設置了一個值,其中包括因為調用 get 方法觸發內部欄位計算而導致已經設置該值的情況。 |
abstract void |
roll(int field,
boolean up)
在給定的時間欄位上添加或減去(上/下)單個時間單元,不更改更大的欄位。 |
void |
roll(int field,
int amount)
向指定日曆欄位添加指定(有符號的)時間量,不更改更大的欄位。 |
void |
set(int field,
int value)
將給定的日曆欄位設置為給定值。 |
void |
set(int year,
int month,
int date)
設置日曆欄位 YEAR 、MONTH 和 DAY_OF_MONTH 的值。 |
void |
set(int year,
int month,
int date,
int hourOfDay,
int minute)
設置日曆欄位 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR_OF_DAY 和 MINUTE 的值。 |
void |
set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second)
設置欄位 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR 、MINUTE 和 SECOND 的值。 |
void |
setFirstDayOfWeek(int value)
設置一星期的第一天是哪一天;例如,在美國,這一天是 SUNDAY ,而在法國,這一天是 MONDAY 。 |
void |
setLenient(boolean lenient)
指定日期/時間解釋是否是寬鬆的。 |
void |
setMinimalDaysInFirstWeek(int value)
設置一年中第一個星期所需的最少天數,例如,如果定義第一個星期包含一年第一個月的第一天,則使用值 1 調用此方法。 |
void |
setTime(Date date)
使用給定的 Date 設置此 Calendar 的時間。 |
void |
setTimeInMillis(long millis)
用給定的 long 值設置此 Calendar 的當前時間值。 |
void |
setTimeZone(TimeZone value)
使用給定的時區值來設置時區。 |
String |
toString()
返回此日曆的字元串表示形式。 |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
public static final int ERA
get
和 set
的欄位數字,比如羅馬儒略歷中的 AD 或 BC。這是一個特定於日曆的值;請參閱子類別文檔。
GregorianCalendar.AD
,
GregorianCalendar.BC
,
常數欄位值public static final int YEAR
get
和 set
的欄位數字。這是一個特定於日曆的值;請參閱子類別文檔。
public static final int MONTH
get
和 set
的欄位數字。這是一個特定於日曆的值。在格里高里歷和羅馬儒略歷中一年中的第一個月是 JANUARY
,它為 0;最後一個月取決於一年中的月份數。
JANUARY
,
FEBRUARY
,
MARCH
,
APRIL
,
MAY
,
JUNE
,
JULY
,
AUGUST
,
SEPTEMBER
,
OCTOBER
,
NOVEMBER
,
DECEMBER
,
UNDECIMBER
,
常數欄位值public static final int WEEK_OF_YEAR
get
和 set
的欄位數字,指示當前年中的星期數。正如 getFirstDayOfWeek()
和 getMinimalDaysInFirstWeek()
所定義的那樣,一年中第一個星期的值為 1。子類別定義一年第一個星期之前的天數,即 WEEK_OF_YEAR
的值。
getFirstDayOfWeek()
,
getMinimalDaysInFirstWeek()
,
常數欄位值public static final int WEEK_OF_MONTH
get
和 set
的欄位數字,指示當前月中的星期數。正如 getFirstDayOfWeek()
和 getMinimalDaysInFirstWeek()
所定義的那樣,一個月中第一個星期的值為 1。子類別定義一個月第一個星期之前的天數,即 WEEK_OF_MONTH
的值。
getFirstDayOfWeek()
,
getMinimalDaysInFirstWeek()
,
常數欄位值public static final int DATE
get
和 set
的欄位數字,指示一個月中的某天。它與 DAY_OF_MONTH
是同義詞。一個月中第一天的值為 1。
DAY_OF_MONTH
,
常數欄位值public static final int DAY_OF_MONTH
get
和 set
的欄位數字,指示一個月中的某天。它與 DATE
是同義詞。一個月中第一天的值為 1。
DATE
,
常數欄位值public static final int DAY_OF_YEAR
get
和 set
的欄位數字,指示當前年中的天數。一年中第一天的值為 1。
public static final int DAY_OF_WEEK
get
和 set
的欄位數字,指示一個星期中的某天。該欄位可取的值為 SUNDAY
、MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
和 SATURDAY
。
SUNDAY
,
MONDAY
,
TUESDAY
,
WEDNESDAY
,
THURSDAY
,
FRIDAY
,
SATURDAY
,
常數欄位值public static final int DAY_OF_WEEK_IN_MONTH
get
和 set
的欄位數字,指示當前月中的第幾個星期。與 DAY_OF_WEEK
欄位一起使用時,就可以唯一地指定某月中的某一天。與 WEEK_OF_MONTH
和 WEEK_OF_YEAR
不同,該欄位的值並不 取決於 getFirstDayOfWeek()
或 getMinimalDaysInFirstWeek()
。DAY_OF_MONTH
1 到 7
總是對應於 DAY_OF_WEEK_IN_MONTH 1
;8
到 14
總是對應於 DAY_OF_WEEK_IN_MONTH 2
,依此類別推。DAY_OF_WEEK_IN_MONTH 0
表示 DAY_OF_WEEK_IN_MONTH 1
之前的那個星期。負值是從一個月的末尾開始逆向計數,因此,一個月的最後一個星期天被指定為 DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1
。因為負值是逆向計數的,所以它們在月份中的對齊方式通常與正值的不同。例如,如果一個月有 31 天,那麼 DAY_OF_WEEK_IN_MONTH -1
將與 DAY_OF_WEEK_IN_MONTH 5
和 DAY_OF_WEEK_IN_MONTH 4
的末尾相重疊。
DAY_OF_WEEK
,
WEEK_OF_MONTH
,
常數欄位值public static final int AM_PM
get
和 set
的欄位數字,指示 HOUR
是在中午之前還是在中午之後。例如,在 10:04:15.250 PM 這一時刻,AM_PM
為 PM
。
AM
,
PM
,
HOUR
,
常數欄位值public static final int HOUR
get
和 set
的欄位數字,指示上午或下午的小時。HOUR
用於 12 小時制時鐘 (0 - 11)。中午和午夜用 0 表示,不用 12 表示。例如,在 10:04:15.250 PM 這一時刻,HOUR
為 10。
AM_PM
,
HOUR_OF_DAY
,
常數欄位值public static final int HOUR_OF_DAY
get
和 set
的欄位數字,指示一天中的小時。HOUR_OF_DAY
用於 24 小時制時鐘。例如,在 10:04:15.250 PM 這一時刻,HOUR_OF_DAY
為 22。
HOUR
,
常數欄位值public static final int MINUTE
get
和 set
的欄位數字,指示一小時中的分鐘。例如,在 10:04:15.250 PM 這一時刻,MINUTE
為 4。
public static final int SECOND
get
和 set
的欄位數字,指示一分鐘中的秒。例如,在 10:04:15.250 PM 這一時刻,SECOND
為 15。
public static final int MILLISECOND
get
和 set
的欄位數字,指示一秒中的毫秒。例如,在 10:04:15.250 PM 這一時刻,MILLISECOND
為 250。
public static final int ZONE_OFFSET
get
和 set
的欄位數字,以毫秒為單位指示距 GMT 的大致偏移量。
如果 TimeZone
實作子類別支持歷史上用過的 GMT 偏移量更改,則此欄位可反應此 Calendar
時區的正確 GMT 偏移量值。
public static final int DST_OFFSET
get
和 set
的欄位數字,以毫秒為單位指示夏令時的偏移量。
如果 TimeZone
實作子類別支持歷史上用過的 Daylight Saving Time 時間表更改,則此欄位可反應此 Calendar
時區的正確夏令時偏移量值。
public static final int FIELD_COUNT
get
和 set
可識別的不同欄位的數量。欄位編號的範圍是從 0 到 FIELD_COUNT-1
。
public static final int SUNDAY
DAY_OF_WEEK
欄位值。
public static final int MONDAY
DAY_OF_WEEK
欄位值。
public static final int TUESDAY
DAY_OF_WEEK
欄位值。
public static final int WEDNESDAY
DAY_OF_WEEK
欄位值。
public static final int THURSDAY
DAY_OF_WEEK
欄位值。
public static final int FRIDAY
DAY_OF_WEEK
欄位值。
public static final int SATURDAY
DAY_OF_WEEK
欄位值。
public static final int JANUARY
MONTH
欄位值。
public static final int FEBRUARY
MONTH
欄位值。
public static final int MARCH
MONTH
欄位值。
public static final int APRIL
MONTH
欄位值。
public static final int MAY
MONTH
欄位值。
public static final int JUNE
MONTH
欄位值。
public static final int JULY
MONTH
欄位值。
public static final int AUGUST
MONTH
欄位值。
public static final int SEPTEMBER
MONTH
欄位值。
public static final int OCTOBER
MONTH
欄位值。
public static final int NOVEMBER
MONTH
欄位值。
public static final int DECEMBER
MONTH
欄位值。
public static final int UNDECIMBER
MONTH
欄位值。儘管 GregorianCalendar
沒有使用該值,但陰曆會使用。
public static final int AM
AM_PM
欄位值。
public static final int PM
AM_PM
欄位值。
public static final int ALL_STYLES
getDisplayNames
的樣式說明符,比如 "January" 和 "Jan"。
SHORT
,
LONG
,
常數欄位值public static final int SHORT
getDisplayName
和 getDisplayNames
的樣式說明符,比如 "Jan"。
LONG
,
常數欄位值public static final int LONG
getDisplayName
和 getDisplayNames
的樣式說明符,比如 "January"。
SHORT
,
常數欄位值protected int[] fields
FIELD_COUNT
整數陣列,索引值為 ERA 到 DST_OFFSET
。
protected boolean[] isSet
FIELD_COUNT
布林值陣列,索引值為 ERA 到 DST_OFFSET
。
protected long time
isTimeSet
protected boolean isTimeSet
time
值是一個有效值,則返回 true。通過更改 field[]
的項,可以使時間無效。
time
protected boolean areFieldsSet
fields[]
與當前的設置時間同步,則返回 true。如果返回 false,則在下一次試圖獲得某一欄位的值時,將強行重新計算 time
當前值中的所有欄位。
建構子詳細資訊 |
---|
protected Calendar()
TimeZone.getDefault()
protected Calendar(TimeZone zone, Locale aLocale)
zone
- 要使用的時區aLocale
- 用於星期資料的語言環境方法詳細資訊 |
---|
public static Calendar getInstance()
Calendar
基於當前時間,使用了預設時區和預設語言環境。
public static Calendar getInstance(TimeZone zone)
Calendar
基於當前時間,使用了給定時區和預設語言環境。
zone
- 要使用的時區
public static Calendar getInstance(Locale aLocale)
Calendar
基於當前時間,使用了預設時區和給定的語言環境。
aLocale
- 用於星期資料的語言環境
public static Calendar getInstance(TimeZone zone, Locale aLocale)
Calendar
基於當前時間,使用了給定的時區和給定的語言環境。
zone
- 要使用的時區aLocale
- 用於星期資料的語言環境
public static Locale[] getAvailableLocales()
getInstance
方法可以為其返回本地化的實例。返回的陣列必須至少包含一個 Locale
實例,它等同 Locale.US
。
Calendar
實例是可用的。protected abstract void computeTime()
fields[]
中的當前日曆欄位值轉換為毫秒時間值 time
。
complete()
,
computeFields()
protected abstract void computeFields()
time
轉換為 fields[]
中的日曆欄位值。這允許您將該日曆欄位值與為日曆設置的新時間同步。並不 首先重新計算該時間;為了重新計算時間和欄位,請調用 complete()
方法。
computeTime()
public final Date getTime()
Calendar
時間值(從歷元至現在的毫秒偏移量)的 Date
物件。
Date
。setTime(Date)
,
getTimeInMillis()
public final void setTime(Date date)
Date
設置此 Calendar 的時間。
註:使用 Date(Long.MAX_VALUE)
或 Date(Long.MIN_VALUE)
調用 setTime()
可能產生來自 get()
的錯誤欄位值。
date
- 給定的 Date。getTime()
,
setTimeInMillis(long)
public long getTimeInMillis()
getTime()
,
setTimeInMillis(long)
public void setTimeInMillis(long millis)
millis
- 新時間,以從歷元至現在所經過的 UTC 毫秒數形式。setTime(Date)
,
getTimeInMillis()
public int get(int field)
complete()
方法處理的,這個過程與日曆系統有關。
field
- 給定的日曆欄位。
ArrayIndexOutOfBoundsException
- 如果指定欄位超出範圍 (field < 0 || field >= FIELD_COUNT
)。set(int,int)
,
complete()
protected final int internalGet(int field)
field
- 給定的日曆欄位。
get(int)
public void set(int field, int value)
field
- 給定的日曆欄位。value
- 給定日曆欄位所要設置的值。
ArrayIndexOutOfBoundsException
- 如果指定欄位超出範圍 (field < 0 || field >= FIELD_COUNT
),並且處於 non-lenient 網要下。set(int,int,int)
,
set(int,int,int,int,int)
,
set(int,int,int,int,int,int)
,
get(int)
public final void set(int year, int month, int date)
YEAR
、MONTH
和 DAY_OF_MONTH
的值。保留其他日曆欄位以前的值。如果不需要這樣做,則先調用 clear()
。
year
- 用來設置 YEAR
日曆欄位的值。month
- 用來設置 MONTH
日曆欄位的值。Month 值是基於 0 的。例如,0 表示 January。date
- 用來設置 DAY_OF_MONTH
日曆欄位的值。set(int,int)
,
set(int,int,int,int,int)
,
set(int,int,int,int,int,int)
public final void set(int year, int month, int date, int hourOfDay, int minute)
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR_OF_DAY
和 MINUTE
的值。保留其他欄位以前的值。如果不需要這樣做,則先調用 clear()
。
year
- 用來設置 YEAR
日曆欄位的值。month
- 用來設置 MONTH
日曆欄位的值。Month 值是基於 0 的。例如,0 表示 January。date
- 用來設置 DAY_OF_MONTH
日曆欄位的值。hourOfDay
- 用來設置 HOUR_OF_DAY
日曆欄位的值。minute
- 用來設置 MINUTE
日曆欄位的值。set(int,int)
,
set(int,int,int)
,
set(int,int,int,int,int,int)
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
、MINUTE
和 SECOND
的值。保留其他欄位以前的值。如果不需要這樣做,則先調用 clear()
。
year
- 用來設置 YEAR
日曆欄位的值。month
- 用來設置 MONTH
日曆欄位的值。Month 值是基於 0 的。例如,0 表示 January。date
- 用來設置 DAY_OF_MONTH
日曆欄位的值。hourOfDay
- 用來設置 HOUR_OF_DAY
日曆欄位的值。minute
- 用來設置 MINUTE
日曆欄位的值。second
- 用來設置 SECOND
日曆欄位的值。set(int,int)
,
set(int,int,int)
,
set(int,int,int,int,int)
public final void clear()
Calendar
的所日曆欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。這意味著 isSet()
對於所有的日曆欄位都將返回 false
,並且日期和時間計算會將這些欄位作為從未設置的欄位對待。Calendar
實作類別可能對日期/時間計算使用欄位的特定預設值。例如,如果未定義 YEAR
欄位值,則 GregorianCalendar
會使用 1970。
clear(int)
public final void clear(int field)
Calendar
的給定日曆欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。這意味著 isSet(field)
將返回 false
,並且日期和時間計算會將該欄位作為從未設置的欄位對待。Calendar
實作類別可能對日期和時間計算使用欄位的特定預設值。
HOUR_OF_DAY
、HOUR
和 AM_PM
欄位都是單獨處理的,並且應用了一天中時間的解析規則。清除其中的一個欄位不會重置此 Calendar
中的小時值。使用 set(Calendar.HOUR_OF_DAY, 0)
重置小時值。
field
- 要清除的日曆欄位。clear()
public final boolean isSet(int field)
get
方法觸發內部欄位計算而導致已經設置該值的情況。
true
;否則返回 false
。public String getDisplayName(int field, int style, Locale locale)
style
和 locale
下的日曆 field
值的字元串表示形式。如果沒有可用的字元串表示形式,則返回 null
。如果字元串表示形式可用於給定的日曆 field
,則此方法調用 get(field)
來獲取日曆 field
值。
例如,如果此 Calendar
是 GregorianCalendar
並且其日期是 2005-01-01,那麼 MONTH
欄位的字元串表示形式在英語語言環境中將是 long 型別的 "January" 或者 short 型別的 "Jan"。然而,DAY_OF_MONTH
欄位沒有可用的字元串表示形式,並且此方法將返回 null
。
預設實作支持日曆欄位,DateFormatSymbols
在給定 locale
中具有此類別名稱。
field
- 其字元串表示形式返回的日曆欄位style
- 應用於字元串表示形式的型別;SHORT
或 LONG
之一。locale
- 字元串表示形式的語言環境
style
中給定 field
的字元串表示形式;如果沒有可用的字元串表示形式,則返回 null
。
IllegalArgumentException
- 如果 field
或 style
無效,如果此 Calendar
處於 non-lenient 網要並且所有日曆欄位都有無效值
NullPointerException
- 如果 locale
為 nullpublic Map<String,Integer> getDisplayNames(int field, int style, Locale locale)
style
和 locale
下包含日曆 field
所有名稱的 Map
及其相應欄位值。例如,如果此 Calendar
是 GregorianCalendar
,則在英語語言環境的 short 型別中的返回映射將包含 "Jan" 到 JANUARY
,"Feb" 到 FEBRUARY
諸如此類別。
可以考慮用其他日曆欄位值來確定顯示名稱集。例如,如果此 Calendar
是月與日的日曆系統並且由 YEAR
欄位給定的年值有閏月,此方法將返回包含閏月名稱的月名稱,並且月名稱被映射到該年中其指定值。
預設實作支持 DateFormatSymbols
中包含的顯示名稱。例如,如果 field
是 MONTH
並且 style
是 ALL_STYLES
,則此方法返回包含 DateFormatSymbols.getShortMonths()
和 DateFormatSymbols.getMonths()
返回的所有字元串的 Map
。
field
- 其返回顯示名稱的日曆欄位style
- 應用於顯示名稱的樣式;SHORT
、LONG
或 ALL_STYLES
之一。locale
- 顯示名稱的語言環境
style
和 locale
下的所有顯示名稱的 Map
及其欄位值;如果沒有顯示名稱,則返回 null
IllegalArgumentException
- 如果 field
或 style
無效,如果此 Calendar
處於 non-lenient 網要並且所有日曆欄位都有無效值
NullPointerException
- 如果 locale
為 nullprotected void complete()
computeTime()
方法。然後調用 computeFields()
方法來計算所有的日曆欄位值。
public boolean equals(Object obj)
Calendar
與指定 Object
比較。當且僅當參數是同一日曆系統的 Calendar
物件時,結果才為 true
,該日曆系統將同一 Calendar
參數下的同一時間值(從歷元至現在的毫秒偏移量)表示為此物件。
Calendar
參數是通過 isLenient
、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
和 getTimeZone
方法表示的值。如果在兩個 Calendar
之間這些參數中存在任何不同之處,則此方法返回 false
。
使用 compareTo
方法來僅對時間值進行比較。
Object
中的 equals
obj
- 要與之比較的物件。
obj
,則返回 true
;否則返回 false
。Object.hashCode()
,
Hashtable
public int hashCode()
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean before(Object when)
Calendar
表示的時間是否在指定 Object
表示的時間之前,返回判斷結果。此方法等效於:
當且僅當compareTo(when) < 0
when
是一個 Calendar
實例時才返回 true。否則該方法返回 false
。
when
- 要比較的 Object
Calendar
的時間在 when
表示的時間之前,則返回 true
;否則返回 false
。compareTo(Calendar)
public boolean after(Object when)
Calendar
表示的時間是否在指定 Object
表示的時間之後,返回判斷結果。此方法等效於:
當且僅當compareTo(when) > 0
when
是一個 Calendar
實例時才返回 true。否則該方法返回 false
。
when
- 要比較的 Object
Calendar
的時間在 when
表示的時間之後,則返回 true
;否則返回 false
。compareTo(Calendar)
public int compareTo(Calendar anotherCalendar)
Calendar
物件表示的時間值(從歷元至現在的毫秒偏移量)。
Comparable<Calendar>
中的 compareTo
anotherCalendar
- 要比較的 Calendar
。
Calendar
表示的時間,則返回 0
值;如果此 Calendar
的時間在參數表示的時間之前,則返回小於 0
的值;如果此 Calendar
的時間在參數表示的時間之後,則返回大於 0
的值。
NullPointerException
- 如果指定的 Calendar
為 null
。
IllegalArgumentException
- 如果因為無效的日曆值而無法獲得指定 Calendar
物件的時間值。public abstract void add(int field, int amount)
add(Calendar.DAY_OF_MONTH, -5)
。
field
- 日曆欄位。amount
- 為欄位添加的日期或時間量。roll(int,int)
,
set(int,int)
public abstract void roll(int field, boolean up)
roll(Calendar.DATE, true)。在 year 或 Calendar.YEAR 欄位上滾動時,將在從 1 到調用 getMaximum(Calendar.YEAR)
的返回值之間的範圍內滾動 year 值。在 month 或 Calendar.MONTH 欄位上滾動時,其他欄位(如 date)可能發生衝突,因此需要更改它們。例如,在日期 01/31/96 上滾動 month 將產生 02/29/96 的日期。在 hour-in-day 或 Calendar.HOUR_OF_DAY 欄位上滾動時,小時值會在 0 到 23 之間的範圍內滾動,它是基於 0 的。
field
- 時間欄位。up
- 指示指定時間欄位的值是向上滾動還是向下滾動。如果向上滾動,則使用 true,否則使用 false。add(int,int)
,
set(int,int)
public void roll(int field, int amount)
註:Calendar
上的此預設實作只是重複地調用滾動一個單元的 roll()
版本。這可能並非總是正確的。例如,如果 DAY_OF_MONTH
欄位為 31,則在 February 的範圍內滾動會將它設置為 28。此函數的 GregorianCalendar
版本會小心地處理這個問題。其他子類別還應該提供此函數的覆寫版本,以正確實作該功能。
field
- 日曆欄位。amount
- 要添加到日曆 field
中的有符號時間量。roll(int,boolean)
,
add(int,int)
,
set(int,int)
public void setTimeZone(TimeZone value)
value
- 給定的時區。public TimeZone getTimeZone()
public void setLenient(boolean lenient)
lenient
- 如果開啟 lenient 網要,則為 true
;如果關閉此網要,則為 false
。isLenient()
,
DateFormat.setLenient(boolean)
public boolean isLenient()
true
;否則返回 false
。setLenient(boolean)
public void setFirstDayOfWeek(int value)
SUNDAY
,而在法國,這一天是 MONDAY
。
value
- 給出的一星期的第一天。getFirstDayOfWeek()
,
getMinimalDaysInFirstWeek()
public int getFirstDayOfWeek()
SUNDAY
,而在法國,這一天是 MONDAY
。
setFirstDayOfWeek(int)
,
getMinimalDaysInFirstWeek()
public void setMinimalDaysInFirstWeek(int value)
value
- 一年中第一個星期所需的給定最少天數。getMinimalDaysInFirstWeek()
public int getMinimalDaysInFirstWeek()
setMinimalDaysInFirstWeek(int)
public abstract int getMinimum(int field)
Calendar
實例給定日曆欄位的最小值。最小值被定義為 get
方法為任何可能時間值返回的最小值。最小值取決於日曆系統實例的特定參數。
field
- 日曆欄位。
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public abstract int getMaximum(int field)
Calendar
實例給定日曆欄位的最大值。最大值被定義為 get
方法為任何可能時間值返回的最大值。最大值取決於日曆系統實例的特定參數。
field
- 日曆欄位。
getMinimum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public abstract int getGreatestMinimum(int field)
Calendar
實例給定日曆欄位的最高的最小值。最高的最小值被定義為 getActualMinimum(int)
方法為任何可能時間值返回的最大值。最高的最小值取決於日曆系統實例的特定參數。
field
- 日曆欄位。
getMinimum(int)
,
getMaximum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public abstract int getLeastMaximum(int field)
Calendar
實例給定日曆欄位的最低的最大值。最低的最大值被定義為 getActualMaximum(int)
方法為任何可能時間值返回的最小值。最低的最大值取決於日曆系統實例的特定參數。例如,對於格里高里歷系統,Calendar
將為 DAY_OF_MONTH
欄位返回 28,因為第 28 天是該日曆最短那個月的最後一天,即普通年的二月。
field
- 日曆欄位。
getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public int getActualMinimum(int field)
Calendar
的時間值,返回指定日曆欄位可能擁有的最小值。
此方法的預設實作使用了一個迭代演算法來確定日曆欄位的實際最小值。如果可能的話,子類別應該使用更有效的實作來覆寫此方法——在許多情況下,它們只是簡單地返回 getMinimum()
。
field
- 日曆欄位
Calendar
的時間值而言,給定日曆欄位的最小值getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMaximum(int)
public int getActualMaximum(int field)
Calendar
的時間值,返回指定日曆欄位可能擁有的最大值。例如,在某些年份中,MONTH
欄位的實際最大值是 12,而在希伯來日曆系統的其他年份中,該欄位的實際最大值是 13。
此方法的預設實作使用了一個迭代演算法來確定日曆欄位的實際最大值。如果有可能的話,子類別應該使用一個更有效的實作來覆寫此方法。
field
- 日曆欄位
Calendar
的時間值而言,給定日曆欄位的最大值getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMaximum(int)
public Object clone()
Object
中的 clone
Cloneable
public String toString()
null
。
Object
中的 toString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。