領(lǐng)略java.util.Canlendar的優(yōu)點(diǎn)
自JDK1.1引入的Calendar類(lèi)是另一種不同類(lèi)型的日期處理類(lèi)。想象它是一個(gè)掛在墻壁上的典型日歷,有許多日期和頁(yè)數(shù)可以翻閱。
Calendar類(lèi)的基礎(chǔ)即有變量域的觀(guān)念。每個(gè)類(lèi)元素都是域,并且這些域在Calendar類(lèi)中表現(xiàn)為靜態(tài)變量。這些變量域,可以通過(guò)get/set類(lèi)方法來(lái)獲得或者設(shè)置域值。
// 獲得默認(rèn)的Calendar實(shí)例,給它設(shè)置時(shí)間
Calendarcal = Calendar.getInstance();
intyear = cal.get(Calendar.YEAR);
cal.set(Calendar.MONTH,Calendar.NOVEMBER);
Calendar類(lèi)的add和roll方法提供在日期之間轉(zhuǎn)換的能力。每個(gè)方法都由一個(gè)參數(shù)變量和一個(gè)參數(shù)值來(lái)修改,通過(guò)這個(gè)可為正數(shù)或負(fù)數(shù)的參數(shù)值來(lái)修改它。僅僅不同的是,add方法可以向高階的變量域溢出。例如,假如從九月三號(hào)向后倒退三天,將得到:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,-3);
// 值為: 星期六八月 31 23:43:19 EDT 2002
然而使用roll方法向后回滾三天得出:
Calendar cal = Calendar.getInstance();
cal.roll(Calendar.DATE,-3);
// 值為: 星期一九月 30 23:43:47 EDT 2002
這就是為什么通常主要使用add方法的原因。
還有一個(gè)隱藏在最通用的Calendar的子類(lèi)中的功能性方法--isLeapYear(判定是否為閏年)方法。
Calendar cal = Calendar.getInstance();
booleanleapYear = ( (GregorianCalendar)cal ).isLeapYear(2002);
// 這個(gè)值是false
盡管它是一個(gè)實(shí)例方法,isLeapYear方法的行為表現(xiàn)像靜態(tài)方法,需要提供年份的參數(shù)傳值給日歷。
通過(guò)接管日期修改的功能,java.util.Calendar類(lèi)看上去更像是Data類(lèi)的復(fù)雜版本。但是它還提供額外的功能,更不用說(shuō)它的國(guó)際化支持,使得它值得擁有學(xué)習(xí)的難度曲線(xiàn)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注