import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c = Calendar.getInstance(Locale.CHINESE);
// 有Calendar獲取Date
Date d = c.getTime();
System.out.println(d);
// 獲取年月日
System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+c.get(Calendar.MONTH));
System.out.println("日:"+c.get(Calendar.DATE));
// 時間計算
c.add(Calendar.YEAR, -1);
System.out.println("前1年:"+c.getTime());
// 設定時間,Calendar有兩種模式lenient(寬松模式)和non-lenient.當Calendar處于寬松模式下,每個
// 時間字段都可以超出它允許的范圍;在處于非寬松模式下,當時間字段超出范圍時,會拋出異常
//c.setLenient(false);//容錯開發,false可關閉容錯,進行日期合法性檢查
c.set(2009, 0, 32);// 容錯性,當字段值超過了正常范圍時,上級字段會自動增加
// set方法延遲性,使用set方法后,日歷時間不會立即更新,要等到下次調用get(),getTime(),getTimeinMillis(),add()或roll()
// 時,才會重新計算日歷的時間.這樣也避免了多次調用set方法帶來的多次計算.
System.out.println("設定時間:"+c.getTime());
// add和roll區別,add的上級字段會自動增加
c.set(2008,11,31);
c.add(Calendar.MONTH, 1);
System.out.println("add():"+c.getTime());//2009-01-31 年份增加了
c.set(2008,11,31);
c.roll(Calendar.MONTH, 1);
System.out.println("roll():"+c.getTime());//2008-01-31 年份沒有改變
}
}