Javasp

Thursday, May 20, 2004

領略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