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 年份没有改变
}
}