1. 程式人生 > >Java日期和時間JDK—API1.6.0(Date類、Calendar類)

Java日期和時間JDK—API1.6.0(Date類、Calendar類)

java.util,Date

Java在java.util包中提供了Date類,這個類封裝了當前的日期和時間:

  • 所有已經實現的介面:Serializable         Cloneable       Comparable<Date>
  • 直接已知子類: Date       Time      Timestamp

public class Date

extends Object

implements  Serializable , Cloneable , Comparable<Date>

       類 Date 表示特定的瞬間,精確到毫秒。

       在 JDK 1.1 之前,類 Date 有兩個其他的函式。它允許把日期解釋為年、月、日、小時、分鐘和秒值。它也允許格式化和解析日期字串。不過,這些函式的 API 不易於實現國際化。從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間欄位之間轉換,使用 DateFormat 類來格式化和解析日期字串。Date 中的相應方法已廢棄。

        儘管 Date

類打算反映協調世界時 (UTC),但無法做到如此準確,這取決於 Java 虛擬機器的主機環境。當前幾乎所有作業系統都假定 1 天 = 24 × 60 × 60 = 86400 秒。但對於 UTC,大約每一兩年出現一次額外的一秒,稱為“閏秒”。閏秒始終作為當天的最後一秒增加,並且始終在 12 月 31 日或 6 月 30 日增加。例如,1995 年的最後一分鐘是 61 秒,因為增加了閏秒。大多數計算機時鐘不是特別的準確,因此不能反映閏秒的差別。

        一些計算機標準是按照格林威治標準時 (GMT) 定義的,格林威治標準時和世界時 (UT) 是相等的。GMT 是標準的“民間”名稱;UT 是相同標準的“科學”名稱。UTC 和 UT 的區別是:UTC 是基於原子時鐘的,UT 是基於天體觀察的,兩者在實際應用中難分軒輊。因為地球的旋轉不是均勻的(它以複雜的方式減速和加速),所以 UT 始終不是均勻地流過。閏秒是根據需要引入 UTC 的,以便把 UTC 保持在 UT1 的 0.9 秒之內,UT1 是應用了某些更正的 UT 版本。還有其他的時間和日期系統;例如,基於衛星的全球定位系統 (GPS) 使用的時間刻度與 UTC 同步,但沒有

針對閏秒進行調整。有關更多資訊的一個有趣來源是美國海軍天文臺,特別是 Directorate of Time 的網址: http://tycho.usno.navy.mil  ; 還有它們對 "Systems of Time" 的定義,網址為:http://tycho.usno.navy.mil/systime.html

        在類 Date 所有可以接受或返回年、月、日期、小時、分鐘和秒值的方法中,將使用下面的表示形式:

  • 年份 y 由整數 y - 1900 表示。
  • 月份由從 0 至 11 的整數表示;0 是一月、1 是二月等等;因此 11 是十二月。
  • 日期(一月中的某天)按通常方式由整數 1 至 31 表示。
  • 小時由從 0 至 23 的整數表示。因此,從午夜到 1 a.m. 的時間是 0 點,從中午到 1 p.m. 的時間是 12 點。
  • 分鐘按通常方式由 0 至 59 的整數表示。
  • 秒由 0 至 61 的整數表示;值 60 和 61 只對閏秒發生,儘管那樣,也只用在實際正確跟蹤閏秒的 Java 實現中。於按當前引入閏秒的方式,兩個閏秒在同一分鐘內發生是極不可能的,但此規範遵循 ISO C 的日期和時間約定。

在所有情形中,針對這些目的賦予方法的引數不需要在指定的範圍內;例如,可以把日期指定為 1 月 32 日,並把它解釋為 2 月 1 日的相同含義。

另請參見:DateFormat, Calendar, TimeZone, 序列化表格


Date類的構造方法摘要:

方   法 說   明

Date()

分配 Date 物件並初始化此物件當前的日期和時間,以表示分配它的時間(精確到毫秒)。

Date(long date)

分配 Date 物件並初始化此物件,以表示自從標準基準時間(稱為“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數

方法摘要:一旦有一個可用的日期物件,可以呼叫以下任何一種支援的方法使用時間:

方   法 描    述
boolean after(Date date) 如果呼叫Date物件包含或晚於指定的日期則返回true,否則,返回false。
boolean before(Date date) 如果呼叫Date物件包含或早於日期指定的日期返回true,否則,返回false。
Object clone( ) 重複呼叫Date物件。
int compareTo(Date date) 呼叫物件的值與日期比較。如果這兩個值相等返回0。如果呼叫物件是早於日期返回一個負值。如果呼叫物件遲於日期返回正值。
int compareTo(Object obj) 以相同的compareTo(Date)操作 如果obj是一個類日期。否則,它會丟擲一個ClassCastException。
boolean equals(Object date) 如果呼叫Date物件包含相同的時間及日期指定日期則返回true,否則,返回false。
long getTime( ) 返回自1970年1月1日起已經過的毫秒數。
int hashCode( ) 返回呼叫物件的雜湊程式碼。
void setTime(long time) 設定所指定的時間,這表示從1970年1月1日從午夜的時間和日期以毫秒為單位經過的時間。
String toString( ) 呼叫Date物件轉換為字串,並返回結果。
從類 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait

構造方法詳細資訊


Date

public Date()

分配 Date 物件並初始化此物件,以表示分配它的時間(精確到毫秒)。


Date

public Date(long date)

分配 Date 物件並初始化此物件,以表示自從標準基準時間(稱為“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。

引數:date - 自 1970 年 1 月 1 日 00:00:00 GMT 以來的毫秒數。

另請參見:System.currentTimeMillis()


 

方法詳細資訊


clone

public Object clone()     返回此物件的副本。

覆蓋:Object 中的 clone

返回:此例項的一個副本。

另請參見:Cloneable


getTime

public long getTime()     返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 物件表示的毫秒數。

返回:    自 1970 年 1 月 1 日 00:00:00 GMT 以來此日期表示的毫秒數。


setTime

public void setTime(long time)   設定此 Date 物件,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time 毫秒的時間點。

引數:time - 毫秒數。


before

public boolean before(Date when)    測試此日期是否在指定日期之前。

引數:when - 日期。

返回:當且僅當此 Date 物件表示的瞬間比 when 表示的瞬間早,才返回 true;否則返回 false

丟擲:NullPointerException - 如果 when 為 null。


after

public boolean after(Date when)   測試此日期是否在指定日期之後。

引數:when - 日期。

返回:當且僅當此 Date 物件表示的瞬間比 when 表示的瞬間晚,才返回 true;否則返回 false

丟擲:NullPointerException - 如果 when 為 null。


equals

public boolean equals(Object obj)

       比較兩個日期的相等性。當且僅當引數不為 null,並且是一個表示與此物件相同的時間點(到毫秒)的 Date 物件時,結果才為 true。因此,當且僅當 getTime 方法對於兩個 Date 物件返回相同的 long 值時,這兩個物件才是相等的。

覆蓋:Object 中的 equals

引數:obj - 要與之比較的物件。

返回:如果物件相同,則返回 true;否則,返回 false

另請參見:getTime()


compareTo

public int compareTo(Date anotherDate)    比較兩個日期的順序。

指定者:介面 Comparable<Date> 中的 compareTo

引數:anotherDate - 要比較的 Date

返回:如果引數 Date 等於此 Date,則返回值 0;如果此 Date 在 Date 引數之前,則返回小於 0 的值;如果此 Date 在 Date 引數之後,則返回大於 0 的值。

丟擲:NullPointerException - 如果 anotherDate 為 null。

從以下版本開始:1.2


hashCode

public int hashCode()

返回此物件的雜湊碼值。結果是 getTime() 方法返回的基本 long 值的兩部分的異或。也就是說,雜湊碼就是以下表達式的值:

(int)(this.getTime()^(this.getTime() >>> 32))

覆蓋:Object 中的 hashCode

返回:此物件的雜湊碼值。

另請參見:Object.equals(java.lang.Object), Hashtable


toString

public String toString()

把此 Date 物件轉換為以下形式的 String

 dow mon dd hh:mm:ss zzz yyyy

其中:

  • dow 是一週中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
  • mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
  • dd 是一月中的某一天(01 至 31),顯示為兩位十進位制數。
  • hh 是一天中的小時(00 至 23),顯示為兩位十進位制數。
  • mm 是小時中的分鐘(00 至 59),顯示為兩位十進位制數。
  • ss 是分鐘中的秒數(00 至 61),顯示為兩位十進位制數。
  • zzz 是時區(並可以反映夏令時)。標準時區縮寫包括方法 parse 識別的時區縮寫。如果不提供時區資訊,則 zzz 為空,即根本不包括任何字元。
  • yyyy 是年份,顯示為 4 位十進位制數。

覆蓋:Object 中的 toString

返回:此日期的字串表示形式。

另請參見:toLocaleString(), toGMTString()


java.util.Calendar     Calendar類

所有已實現的介面:

Serializable, Cloneable, Comparable<Calendar>

直接已知子類:

GregorianCalendar


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

    Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEARMONTHDAY_OF_MONTHHOUR日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。

該類還為實現包範圍外的具體日曆系統提供了其他欄位和方法。這些欄位和方法被定義為 protected

       與其他語言環境敏感類一樣,Calendar 提供了一個類方法 getInstance,以獲得此型別的一個通用的物件。CalendargetInstance 方法返回一個 Calendar 物件,其日曆欄位已由當前日期和時間初始化:

     Calendar rightNow = Calendar.getInstance();

   Calendar 物件能夠生成為特定語言和日曆風格實現日期-時間格式化所需的所有日曆欄位值,例如,日語-格里高裡歷,日語-傳統日曆。Calendar 定義了某些日曆欄位返回值的範圍,以及這些值的含義。例如,對於所有日曆,日曆系統第一個月的值是 MONTH == JANUARY。其他值是由具體子類(例如 ERA)定義的。有關此內容的細節,請參閱每個欄位的文件和子類文件。

獲得並設定日曆欄位值

       可以通過呼叫 set 方法來設定日曆欄位值。在需要計算時間值(距曆元所經過的毫秒)或日曆欄位值之前,不會解釋 Calendar 中的所有欄位值設定。呼叫 getgetTimeInMillisgetTimeaddroll 涉及此類計算。

寬鬆性

   Calendar 有兩種解釋日曆欄位的模式,即 lenientnon-lenient。當 Calendar 處於 lenient 模式時,它可接受比它所生成的日曆欄位範圍更大範圍內的值。當 Calendar 重新計算日曆欄位值,以便由 get() 返回這些值時,所有日曆欄位都被標準化。例如,lenient 模式下的 GregorianCalendarMONTH == JANUARYDAY_OF_MONTH == 32 解釋為 February 1。

       當 Calendar 處於 non-lenient 模式時,如果其日曆欄位中存在任何不一致性,它都會丟擲一個異常。例如,GregorianCalendar 總是在 1 與月份的長度之間生成 DAY_OF_MONTH 值。如果已經設定了任何超出範圍的欄位值,那麼在計算時間或日曆欄位值時,處於 non-lenient 模式下的 GregorianCalendar 會丟擲一個異常。

第一個星期

   Calendar 使用兩個引數定義了特定於語言環境的 7 天制星期:星期的第一天和第一個星期中的最小一天(從 1 到 7)。這些數字取自構造 Calendar 時的語言環境資源資料。還可以通過為其設定值的方法來顯式地指定它們。

        在設定或獲得 WEEK_OF_MONTHWEEK_OF_YEAR 欄位時,Calendar 必須確定一個月或一年的第一個星期,以此作為參考點。一個月或一年的第一個星期被確定為開始於 getFirstDayOfWeek() 的最早七天,它最少包含那一個月或一年的 getMinimalDaysInFirstWeek() 天數。第一個星期之前的各星期編號為 ...、-1、0;之後的星期編號為 2、3、...。注意,get() 返回的標準化編號方式可能有所不同。例如,特定 Calendar 子類可能將某一年第 1 個星期之前的那個星期指定為前一年的第 n 個星期。

日曆欄位解析

        在計算日曆欄位中的日期和時間時,可能沒有足夠的資訊用於計算(例如只有年和月,但沒有日),或者可能有不一致的資訊( 例如 "Tuesday, July 15, 1996"(格林威治時間)——實際上,1996 年 7 月 15 日是星期一 )。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 = 1970MONTH = JANUARYDAY_OF_MONTH = 1,等等。

注: 對於某些特別時間的解釋可能會有某些歧義,可以用下列方式解決:

  1. 23:59 是一天中的最後一分鐘,而 00:00 是下一天的第一分鐘。因此,1999 年 12 月 31 日的 23:59 < 2000 年 1 月 1 日的 00:00。
  2. 儘管從歷史上看不夠精確,但午夜也屬於 "am",,中午屬於 "pm",所以在同一天,12:00 am ( 午夜 ) < 12:01 am,12:00 pm ( 中午 ) < 12:01 pm。

       日期或時間格式字串不是日曆定義的一部分,因為在執行時,使用者必須能夠修改或重寫它們。可以使用 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 規則 1MONTH 欄位設定為 September,因為向 August 新增 13 個月得出的就是下一年的 September。因為在 GregorianCalendar 中,DAY_OF_MONTH 不可能是 9 月 31 日,所以 add 規則 2DAY_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(),根據是否會影響更大的欄位,使用者介面可以像大多數使用者所期望的那樣執行。

從以下版本開始:JDK1.1


欄位摘要

欄位摘要
static int ALL_STYLES 指示所有風格名稱的 getDisplayNames 的風格說明符,比如 "January" 和 "Jan"。
static int AM 指示從午夜到中午之前這段時間的 AM_PM 欄位值。
static int AM_PM getset 的欄位數字,指示 HOUR 是在中午之前還是在中午之後。
static int APRIL 指示在格里高利曆和羅馬儒略曆中一年中第四個月的 MONTH 欄位值。
protected  boolean areFieldsSet 如果 fields[] 與當前的設定時間同步,則返回 true。
static int AUGUST 指示在格里高利曆和羅馬儒略曆中一年中第八個月的 MONTH 欄位值。
static int DATE getset 的欄位數字,指示一個月中的某天。
static int DAY_OF_MONTH getset 的欄位數字,指示一個月中的某天。
static int DAY_OF_WEEK getset 的欄位數字,指示一個星期中的某天。
static int DAY_OF_WEEK_IN_MONTH getset 的欄位數字,指示當前月中的第幾個星期。
static int DAY_OF_YEAR getset 的欄位數字,指示當前年中的天數。
static int DECEMBER 指示在格里高利曆和羅馬儒略曆中一年中第十二個月的 MONTH 欄位值。
static int DST_OFFSET getset 的欄位數字,以毫秒為單位指示夏令時的偏移量。
static int ERA  指示年代的 getset 的欄位數字,比如羅馬儒略曆中的 AD 或 BC。
static int FEBRUARY 指示在格里高利曆和羅馬儒略曆中一年中第二個月的 MONTH 欄位值。
static int FIELD_COUNT getset 可識別的不同欄位的數量。
protected  int[] fields 此日曆當前設定時間的日曆欄位值。
static int FRIDAY 指示 Friday 的 DAY_OF_WEEK 欄位值。
static int HOUR getset 的欄位數字,指示上午或下午的小時。
static int HOUR_OF_DAY getset 的欄位數字,指示一天中的小時。
protected  boolean[] isSet 通知是否設定了該日曆某一指定日曆欄位的標誌。
protected  boolean isTimeSet 如果 time 值是一個有效值,則返回 true。
static int JANUARY 指示在格里高利曆和羅馬儒略曆中一年中第一個月的 MONTH 欄位值。
static int JULY 指示在格里高利曆和羅馬儒略曆中一年中第七個月的 MONTH 欄位值。
static int JUNE 指示在格里高利曆和羅馬儒略曆中一年中第六個月的 MONTH 欄位值。
static int LONG 指示長名稱的 getDisplayNamegetDisplayNames 的風格說明符,比如 "January"。
static int MARCH 指示在格里高利曆和羅馬儒略曆中一年中第三個月的 MONTH 欄位值。
static int MAY 指示在格里高利曆和羅馬儒略曆中一年中第五個月的 MONTH 欄位值。
static int MILLISECOND getset 的欄位數字,指示一秒中的毫秒。
static int MINUTE getset 的欄位數字,指示一小時中的分鐘。
static int MONDAY 指示 Monday 的 DAY_OF_WEEK 欄位值。
static int MONTH 指示月份的 getset 的欄位數字。
static int NOVEMBER 指示在格里高利曆和羅馬儒略曆中一年中第十一個月的 MONTH 欄位值。
static int OCTOBER 指示在格里高利曆和羅馬儒略曆中一年中第十個月的 MONTH 欄位值。
static int PM 指示從中午到午夜之前這段時間的 AM_PM 欄位值。
static int SATURDAY 指示 Saturday 的 DAY_OF_WEEK 欄位值。
static int SECOND getset 的欄位數字,指示一分鐘中的秒。
static int SEPTEMBER 指示在格里高利曆和羅馬儒略曆中一年中第九個月的 MONTH 欄位值。
static int SHORT 指示短名稱的 getDisplayNamegetDisplayNames 的風格說明符,比如 "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 getset 的欄位數字,指示當前月中的星期數。
static int WEEK_OF_YEAR getset 的欄位數字,指示當前年中的星期數。
static int YEAR  指示年的 getset 的欄位數字。
static int ZONE_OFFSET getset 的欄位數字,以毫秒為單位指示距 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) 返回給定 stylelocale 下的日曆 field 值的字串表示形式。
Map<String,Integer> getDisplayNames(int field, int style, Locale locale) 返回給定 stylelocale 下包含日曆 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)  設定日曆欄位 YEARMONTHDAY_OF_MONTH 的值。