Java Calendar類

Calendar類
我們現在已經能夠格式化並創建一個日期對象了,但是我們如何才能設置和獲取日期數據的特定部分呢,比如說小時,日,或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類。
Calendar類的功能要比Date類強大很多,而且在實現方式上也比Date類要複雜一些。
Calendar類是一個抽象類,在實際使用時實現特定的子類的對象,創建對象的過程對程序員來說是透明的,只需要使用getInstance方法創建即可。
創建一個代表系統當前日期的Calendar對象:Calendar c = Calendar.getInstance();//默認是當前日期
創建一個指定日期的Calendar對象,使用Calendar類代表特定的時間,需要首先創建一個Calendar的對象,然後再設定該對象中的年月日參數來完成網站監控
//創建一個代表2009年6月12日的Calendar對象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
。。。
Calendar類對象字段類型
Calendar類中用一下這些常量表示不同的意義,jdk內的很多類其實都是採用的這種思想
常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意義完全相同
Calendar.HOUR 12小時制的小時
Calendar.HOUR_OF_DAY 24小時制的小時
Calendar.MINUTE 分鐘
Calendar.SECOND 秒
Calendar.DAY_OF_WEEK 星期幾
。。。
Calendar類對象信息的設置
Set設置
如:Calendar c1 = Calendar.getInstance();
調用:
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar對象c1的年月日分別設這爲:2009、6、12
利用字段類型設置
如果只設定某個字段,例如日期的值,則可以使用如右set方法:public void set(int field,int value)
把 c1對象代表的日期設置爲10號,其它所有的數值會被重新計算:c1.set(Calendar.DATE,10);
把c1對象代表的年份設置爲2008年,其他的所有數值會被重新計算:c1.set(Calendar.YEAR,2008);
其他字段屬性set的意義以此類推
。。。
Add設置
Calendar c1 = Calendar.getInstance();
把c1對象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的數值會被重新計算:c1.add(Calendar.DATE, 10);
把c1對象的日期減去10,也就是c1所表的日期的10天前的日期,其它所有的數值會被重新計算:c1.add(Calendar.DATE, -10);
其他字段屬性的add的意義以此類推
。。。
Calendar類對象信息的獲得
Calendar c1 = Calendar.getInstance(); // 獲得年份
int year = c1.get(Calendar.YEAR); // 獲得月份
int month = c1.get(Calendar.MONTH) + 1; // 獲得日期
int date = c1.get(Calendar.DATE); // 獲得小時
int hour = c1.get(Calendar.HOUR_OF_DAY); // 獲得分鐘
int minute = c1.get(Calendar.MINUTE); // 獲得秒
int second = c1.get(Calendar.SECOND); // 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);
。。。
GregorianCalendar類
Calendar類實現了公曆日曆,GregorianCalendar是Calendar類的一個具體實現。
Calendar的getInstance()方法返回一個默認用當前的語言環境和時區初始化的GregorianCalendar對象。GregorianCalendar定義了兩個字段:AD和BC。這些代表公曆定義的兩個時代。
下面列出GregorianCalendar對象的幾個構造方法:
序號 構造函數 說明
1 GregorianCalendar() 在具有默認語言環境的默認時區內使用當前時間構造一個默認的 GregorianCalendar。
2 GregorianCalendar(int year, int month, int date) 在具有默認語言環境的默認時區內構造一個帶有給定日期設置的 GregorianCalendar
3 GregorianCalendar(int year, int month, int date, int hour, int minute) 爲具有默認語言環境的默認時區構造一個具有給定日期和時間設置的 GregorianCalendar。
4 GregorianCalendar(int year, int month, int date, int hour, int minute, int second) 爲具有默認語言環境的默認時區構造一個具有給定日期和時間設置的GregorianCalendar。
5 GregorianCalendar(Locale aLocale) 在具有給定語言環境的默認時區內構造一個基於當前時間的 GregorianCalendar。
6 GregorianCalendar(TimeZone zone) 在具有默認語言環境的給定時區內構造一個基於當前時間的 GregorianCalendar。
7 GregorianCalendar(TimeZone zone, Locale aLocale) 在具有給定語言環境的給定時區內構造一個基於當前時間的 GregorianCalendar。
這裏是GregorianCalendar 類提供的一些有用的方法列表:
序號 方法 說明
1 void add(int field, int amount) 根據日曆規則,將指定的(有符號的)時間量添加到給定的日曆字段中。
2 protected void computeFields() 轉換UTC毫秒值爲時間域值
3 protected void computeTime() 覆蓋Calendar ,轉換時間域值爲UTC毫秒值
4 boolean equals(Object obj) 比較此 GregorianCalendar 與指定的 Object。
5 int get(int field) 獲取指定字段的時間值
6 int getActualMaximum(int field) 返回當前日期,給定字段的最大值
7 int getActualMinimum(int field) 返回當前日期,給定字段的最小值
8 int getGreatestMinimum(int field) 返回此 GregorianCalendar 實例給定日曆字段的最高的最小值。
9 Date getGregorianChange() 獲得格里高利曆的更改日期。
10 int getLeastMaximum(int field) 返回此 GregorianCalendar 實例給定日曆字段的最低的最大值
11 int getMaximum(int field) 返回此 GregorianCalendar 實例的給定日曆字段的最大值。
12 Date getTime() 獲取日曆當前時間。
13 long getTimeInMillis() 獲取用長整型表示的日曆的當前時間
14 TimeZone getTimeZone() 獲取時區。
15 int getMinimum(int field) 返回給定字段的最小值。
16 int hashCode() 重寫hashCode.
17 boolean isLeapYear(int year) 確定給定的年份是否爲閏年。
18 void roll(int field, boolean up) 在給定的時間字段上添加或減去(上/下)單個時間單元,不更改更大的字段。
19 void set(int field, int value) 用給定的值設置時間字段。
20 void set(int year, int month, int date) 設置年、月、日的值。
21 void set(int year, int month, int date, int hour, int minute) 設置年、月、日、小時、分鐘的值。
22 void set(int year, int month, int date, int hour, int minute, int second) 設置年、月、日、小時、分鐘、秒的值。
23 void setGregorianChange(Date date) 設置 GregorianCalendar 的更改日期。
24 void setTime(Date date) 用給定的日期設置Calendar的當前時間。
25 void setTimeInMillis(long millis) 用給定的long型毫秒數設置Calendar的當前時間。
26 void setTimeZone(TimeZone value) 用給定時區值設置當前時區。
27 String toString() 返回代表日曆的字符串。
關於Calender 類的完整列表,你可以參考標準的Java文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章