1.1.1.1.2 日歷類Calendar
在早期的JDK版本中,日期(Date)類附有兩大功能:(1)允許用年、月、日、時、分、秒來解釋日期:(2)允許對表示日期的字符串進行格式化和句法分析。在JDK1.1中提供了類Calendar來完成第一種功能,類DateFormat來完成第二項功能。dateFormat是java.text包中的一個類。與Date類有所不同的是,DateFormat類接受用各種語言和不同習慣表示的日期字符串。本節(jié)將介紹java.util包中的類Calendar及其它新增加的相關(guān)的類。
類Calendar是一個抽象類,它完成日期(Date)類和普通日期表示法(即用一組整型域如YEAR,MONTH,DAY,HOUR表示日期)之間的轉(zhuǎn)換。
由于所使用的規(guī)則不同,不同的日歷系統(tǒng)對同一個日期的解釋有所不同。在JDK1.1中提供了Calendar類一個子類GregorianCalendar??它實現(xiàn)了世界上普遍使用的公歷系統(tǒng)。當然用戶也可以通過繼承Calendar類,并增加所需規(guī)則,以實現(xiàn)不同的日歷系統(tǒng)。
第GregorianCalendar繼承了Calendar類。本節(jié)將在介紹類GregorianCalendar的同時順帶介紹Calendar類中的相關(guān)方法。
類GregorianCalendar提供了七種構(gòu)造函數(shù):
(1)public GregorianCalendar()
創(chuàng)建的對象中的相關(guān)值被設(shè)置成指定時區(qū),缺省地點的當前時間,即程序運行時所處的時區(qū)、地點的當前時間。
(2)public GregorianCalendar(TimeZone zone)
創(chuàng)建的對象中的相關(guān)值被設(shè)置成指定時區(qū)zone,缺省地點的當前時間。
(3)public GregorianCalendar(Locale aLocale)
創(chuàng)建的對象中的相關(guān)值被設(shè)置成缺省時區(qū),指定地點aLocale的當前時間。
(4)public GregorianCalendar(TimeZone zone,Local aLocale)
創(chuàng)建的對象中的相關(guān)值被設(shè)置成指定時區(qū),指定地點的當前時間。
上面使用到的類TimeZone的性質(zhì)如下:
TimeZone是java.util包中的一個類,其中封裝了有關(guān)時區(qū)的信息。每一個時區(qū)對應一組ID。類TimeZone提供了一些方法完成時區(qū)與對應ID兩者之間的轉(zhuǎn)換。
(Ⅰ)已知某個特定的ID,可以調(diào)用方法
public static synchronized TimeZone getTimeZone(String ID)
來獲取對應的時區(qū)對象。
例 太平洋時區(qū)的ID為PST,用下面的方法可獲取對應于太平洋時區(qū)的時區(qū)對象:
TimeZone tz=TimeZone.getTimeZone("PST");
調(diào)用方法getDefault()可以獲取主機所處時區(qū)的對象。
TimeZone tz=TimeZone.getDefault();
(Ⅱ)調(diào)用以下方法可以獲取時區(qū)的ID
■public static synchronized String[] getavailableIDs(int rawOffset)
根據(jù)給定時區(qū)偏移值獲取ID數(shù)組。同一時區(qū)的不同地區(qū)的ID可能不同,這是由于不同地區(qū)對是否實施夏時制意見不統(tǒng)一而造成的。
例String s[]=TimeZone.getAvailableIDs(-7*60*60*1000);
打印s,結(jié)果為s[0]=PNT,s[1]=MST
■public static synchronized String[] getAvailableIDs()
獲取提供的所有支持的ID。
■public String getID()
獲取特定時區(qū)對象的ID。
例 TimeZone tz=TimeZone.getDefault();
String s=tz.getID();
打印s,結(jié)果為s=CTT。
上面使用類的對象代表了一個特定的地理、政治或文化區(qū)域。Locale只是一種機制,它用來標識一類對象,Local本身并不包含此類對象。
要獲取一個Locale的對象有兩種方法:
(Ⅰ)調(diào)用Locale類的構(gòu)造方法
Locale(String language,String country)
Locale(String language,String country,String variant)
參數(shù)說明:language??在ISO-639中定義的代碼,由兩個小寫字母組成。
country??在ISO-3166中定義的代碼,由兩個大寫字母組成。
variant??售貨商以及特定瀏覽器的代碼,例如使用WIN代表Windows。
(Ⅱ)調(diào)用Locale類中定義的常量
Local類提供了大量的常量供用戶創(chuàng)建Locale對象。
例 Locale.CHINA
為中國創(chuàng)建一個Locale的對象。
類TimeZone和類Locale中的其它方法,讀者可查閱API。
(5)public GregorianCalendar(int year,int month,int date)
(6)public GregorianCalendar(int year,int month,int date,int hour,int minute)
(7)public GregorianCalendar(int year,int month,int date,int hour,int minute,int second)
用給定的日期和時間創(chuàng)建一個GregorianCalendar的對象。
參數(shù)說明:
year-設(shè)定日歷對象的變量YEAR;month-設(shè)定日歷對象的變量MONTH;
date-設(shè)定日歷對象的變量DATE;hour-設(shè)定日歷對象的變量HOUR_OF_DAY;
minute-設(shè)定日歷對象的變量MINUTE;second-設(shè)定日歷對象的變量SECOND。
與Date類中不同的是year的值沒有1900這個下限,而且year的值代表實際的年份。month的含義與Date類相同,0代表1月,11代表12月。
例 GregorianCalendar cal=new GregorianCalendar(1991,2,4)
cal的日期為1991年3月4號。
除了與Date中類似的方法外,Calendar類還提供了有關(guān)方法對日歷進行滾動計算和數(shù)學計算。計算規(guī)則由給定的日歷系統(tǒng)決定。進行日期計算時,有時會遇到信息不足或信息不實等特殊情況。Calendar采取了相應的方法解決這些問題。當信息不足時將采用缺省設(shè)置,在GregorianCalendar類中缺省設(shè)置一般為YEAR=1970,MONTH=JANUARY,DATE=1。
當信息不實時,Calendar將按下面的次序優(yōu)先選擇相應的Calendar的變量組合,并將其它有沖突的信息丟棄。
MONTH+DAY_OF_MONTH
MONTH+WEEK_OF_MONTH+DAY_OF_WEEK
MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK
DAY_OF+YEAR
DAY_OF_WEEK_WEEK_OF_YEAR
HOUR_OF_DAY
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |