領略java.util.Canlendar的優點
資料來源: 炎黃數據網
自JDK1.1引入Calendar類別(Class),它是另一種不同類型的日期處理類別。想像它是一個掛在牆壁上的典型日曆,有許多日期和頁數可以翻閱。
Calendar類別的基礎即有變量域的觀念。每個類別元素都是域,並且這些域在Calendar類中表現為靜態變量。這些變量域,可以通過get/set類方法來獲得或者設置域值。
// 獲得默認的Calendar實例,給它設置時間
Calendar cal = Calendar.getInstance();
intyear = cal.get(Calendar.YEAR);
cal.set(Calendar.MONTH,Calendar.NOVEMBER);
Calendar類別的add和roll方法提供在日期之間轉換的能力。每個方法都由一個參數變量和一個參數值來修改,通過這個可為正數或負數的參數值來修改它。僅僅不同的是,add方法可以向高階的變量域溢出。例如,如果從九月三日向後倒退三天,將得到:
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方法的原因。
還有一個隱藏在最通用的Calendar的子類中的功能性方法--isLeapYear(判斷是否為閏年)方法。
Calendar cal = Calendar.getInstance();
boolean leapYear = ( (GregorianCalendar)cal ).isLeapYear(2002);
// 這個值是false
儘管它是一個實例方法,isLeapYear方法的行為表現像靜態方法,需要提供年份的參數傳值給日曆。
通過接管日期修改的功能,java.util.Calendar類別看上去更像是Data類別的複雜版本。但是它還提供額外的功能,更不用說它的國際化支持,使得它值得擁有學習的難度曲線。
0 Comments:
Post a Comment
<< Home