Calendar中add函數和roll函數的用法及區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM