Calendar类被设计来取代Date类(Date类存在一些缺陷),处理日期和时间,Calendar类提供了大量访问、修改时间日期的方法 Calendar类是一个抽象类,不能用构造器来创建Calendar对象,但可以通过静态的getInstance方法获取对象。 常规用法示例: public class TestCalendar { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c = Calendar.getInstance();
//取出年
System.out.println(c.get(Calendar.YEAR));
//取出月
System.out.println(c.get(Calendar.MONTH));
//取出日
System.out.println(c.get(Calendar.DATE));
//设置年月日时分秒
c.set(2009, 9, 29, 9, 45, 30);
System.out.println(c.getTime());
//将Calendar推前一年
c.add(Calendar.YEAR, -1);
System.out.println(c.getTime());
//将Calendar的月,向前推8个月
c.roll(Calendar.MONTH, -8);
System.out.println(c.getTime());
} } add(int field, int amount)功能强大,主要用于改变Calendar特定字段的值
使用规则1:当被修改的字段超出它允许的范围时,会发生进位,即上一级字段也会增大
使用规则2:如果下一级字段也需要改变,那么该字段会修正到变化的最小值(如:2009年8月31日,向前推6个月,为2009年2月28日) roll的使用规则与add不同的是roll不会发生进位,其他的地方与add相似 Calendar具有容错性,例如传入不合法参数,设置MOUTH字段的值为13,将会导致YEAR字段加1
可以通过setLenient(false)方法关闭容错性,让他进行严格的参数检查 set方法延迟修改 使用set方法改变某个字段的值时,Calendar所代表的时间不会马上被修改,直到调用使用get,add等方法时才会重新计算时间。 |