Calendar中add()和roll()函數的用法
一、取某個時間點后的整點時刻。例如1984年7月7日15:23:05后的整點時刻即為1984-07-07 16:00:00。
實現如下:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, 1);//小時上加1
calendar.set(Calendar.MINUTE, 0);//分鍾設為0
calendar.set(Calendar.SECOND, 0);//秒鍾設為0
二、取某個日歷之前的某個月。例如要取2002年1月12號之前1個月的時間,應該是2001年12月12日。
Calendar calendar = Calendar.getInstance();
calendar.set(2002, 0, 12);//代表2002年1月12日
calendar.add(Calendar.MONTH, -1);//這樣就將日期設置成了2001年12月12日。
System.out.println(calendar.getTime().toString());
但是這種情況如果用roll()來實現。如以下代碼:
Calendar calendar = Calendar.getInstance();
calendar.set(2002, 0, 12);//代表2002年1月12日
calendar.roll(Calendar.MONTH, -1);//這樣就將日期設置成了2002年12月12日。
System.out.println(calendar.getTime().toString());
結論:roll()函數處理,只會對相應的字段進行處理,不會智能的對其它字段也進行邏輯上的改變。
add()函數會在邏輯上改變其它字段,使結果正確。
注:Calendar中的Month是從0-11的,0代表1月,11代表12月。
http://blog.sina.com.cn/s/blog_62c89b450100sau9.html