1.1?Calendar類概念
Calendar是日歷類,在Date后出現,替換掉了許多Date的方法。該類將所有可能用到的時間信息封裝為靜態成員變量,方便獲取。
Calendar為抽象類,由于語言敏感性,Calendar類在創建對象時并非直接創建,而是通過靜態方法創建,將語言敏感內容處理好,再返回子類對象,
實際上,在歷史上有著許多種紀元的方法。它們的差異實在太大了,比如說一個人的生日是"八月八日" 那么一種可能是陽(公)歷的八月八日,但也可以是陰(農)歷的日期。所以為了計時的統一,必需指定一個日歷的選擇。那現在最為普及和通用的日歷就是 "Gregorian Calendar"。也就是我們在講述年份時常用 "公元幾幾年"。Calendar 抽象類定義了足夠的方法,讓我們能夠表述日歷的規則。Java 本身提供了對 "Gregorian Calendar" 規則的實現。我們從 Calendar.getInstance() 中所獲得的實例就是一個 "GreogrianCalendar" 對象(與您通過 new GregorianCalendar() 獲得的結果一致)。
?
?
Calendar 在 Java 中是一個抽象類(Abstract Class),GregorianCalendar 是它的一個具體實現。
?
我們也可以自己的 Calendar 實現類,然后將它作為 Calendar 對象返回(面向對象的特性)。同樣在 Internet 上,也有對中國農歷的實現。本文對如何擴展 Calendar 不作討論,大家可以通過察看上述 Calendar 的源碼來學習。
?
Calendar 與 Date 的轉換非常簡單:
?
Calendar calendar = Calendar.getInstance();
// 從一個 Calendar 對象中獲取 Date 對象
Date date = calendar.getTime();
// 將 Date 對象反應到一個 Calendar 對象中,
// Calendar/GregorianCalendar 沒有構造函數可以接受 Date 對象
// 所以我們必需先獲得一個實例,然后設置 Date 對象
calendar.setTime(date);
?
?
1.2?Calendar類常用方法
?
l?public static Calendar getInstance()?//獲取日期對象
l?public int get(int field) //獲取時間字段值,字段參見幫助文檔
n?YEAR?年
n?MONTH 月,從0開始算起,最大11;0代表1月,11代表12月。
n?DATE 天
n?HOUR 時
n?MINUTE分
n?SECOND秒
代碼演示:
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
?
l?public void add(int field,int amount) //指定字段增加某值
代碼演示:
Calendar c = Calendar.getInstance();
//修改當前時間為3天后
c.add(Calendar.DATE, 3);
//修改當前時間為5小時后
c.add(Calendar.HOUR, 5);
?
l?public final void set(int field,int value)//設置指定字段的值
代碼演示:
Calendar c = Calendar.getInstance();
//設置時間為2020年5月20日
c.set(Calendar.YEAR, 2020);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DATE, 20);
?
l?public final Date getTime() //獲取該日歷對象轉成的日期對象
代碼演示:
Calendar c = Calendar.getInstance();
Date d = c.getTime();