java.util.Date类也可以对时间进行计算,但很多方法已经过时,Calendar类包罗万象,方便灵活,但使用时务必要小心,理解不透彻容易出大乱子。
1.Calendar.getInstance()
获取到的是当前时刻一个克隆后的日历时间对象,并且这个对象的时间不会再被实时维护更新。当再次调用getInstance()获取到的又是一个新的实例对象。
2.set(时间字段,指定值)
设置指定时间字段的指定值,一般情况下不按照日历规则刷新其它时间字段。
3.roll(时间字段,(+-)值)
设置指定时间字段的值增加/减少,正数向前,负数向后,
不按照日历规则刷新其它时间字段。
4.add(时间字段,(+-)值)
设置指定时间字段的值增加/减少,正数向前,负数向后,
按照日历规则刷新其它时间字段。
需要增加/减少时,建议单独使用add(),
或使用roll()后,调用一次set()可以按日历规则刷新其它时间字段。
日历中,月是从0-11,即1月=0月。
另外:set方法还可以一次性设置年月日时分秒,并且可以指定正负数来进行时间的滚动,同样的,会按照日历的规则进行重新计算结果。
例如:
c.set(2012,0,0,23,59,59) = 2011-12-31 23:59:59(月份为0表示1月,天数1表示1号,为0表示后退一天,后退一天刚好就跨年了,回到了2011年)
c.set(2012,-1,0,23,59,59) = 2011-11-30 23:59:59(月份为-1表示后退1个月,即12月,但日数为0还要后退一天,也就是后退1个月+1天)