java中Calendar.add()方法的使用
Calendar的add方法來進(jìn)行對日期參數(shù)進(jìn)行相關(guān)的動態(tài)改變;比如我們需要得到當(dāng)前年,月,日,小時,分鐘,秒,毫秒的前面時間或者后面時間
public static Date addYears(Date date, int amount) { return add(date, 1, amount); } public static Date addMonths(Date date, int amount) { return add(date, 2, amount); } public static Date addWeeks(Date date, int amount) { return add(date, 3, amount); } public static Date addDays(Date date, int amount) { return add(date, 5, amount); } public static Date addHours(Date date, int amount) { return add(date, 11, amount); } public static Date addMinutes(Date date, int amount) { return add(date, 12, amount); } public static Date addSeconds(Date date, int amount) { return add(date, 13, amount); } public static Date addMilliseconds(Date date, int amount) { return add(date, 14, amount); } private static Date add(Date date, int calendarField, int amount) { if(date == null) { throw new IllegalArgumentException("The date must not be null"); } else { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(calendarField, amount); return c.getTime(); } }
1則代表的是對年份操作,2是對月份操作,3是對星期操作,5是對日期操作,11是對小時操作,12是對分鐘操作,13是對秒操作,14是對毫秒操作
ps:
Calendar calendar = Calendar.getInstance(); calendar.add(5, -1);
其中的5就表示對日期進(jìn)行操作,后面-1表示日期為前一天。
Calendar中add()和roll()函數(shù)的用法
一、取某個時間點(diǎn)后的整點(diǎn)時刻。例如1984年7月7日15:23:05后的整點(diǎn)時刻即為1984-07-07 16:00:00。
實(shí)現(xiàn)如下:
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR_OF_DAY, 1);//小時上加1 calendar.set(Calendar.MINUTE, 0);//分鐘設(shè)為0 calendar.set(Calendar.SECOND, 0);//秒鐘設(shè)為0
二、取某個日歷之前的某個月。例如要取2002年1月12號之前1個月的時間,應(yīng)該是2001年12月12日。
Calendar calendar = Calendar.getInstance(); calendar.set(2002, 0, 12);//代表2002年1月12日 calendar.add(Calendar.MONTH, -1);//這樣就將日期設(shè)置成了2001年12月12日。 System.out.println(calendar.getTime().toString());
但是這種情況如果用roll()來實(shí)現(xiàn)。如以下代碼:
Calendar calendar = Calendar.getInstance(); calendar.set(2002, 0, 12);//代表2002年1月12日 calendar.roll(Calendar.MONTH, -1);//這樣就將日期設(shè)置成了2002年12月12日。 System.out.println(calendar.getTime().toString());
結(jié)論:roll()函數(shù)處理,只會對相應(yīng)的字段進(jìn)行處理,不會智能的對其它字段也進(jìn)行邏輯上的改變。
add()函數(shù)會在邏輯上改變其它字段,使結(jié)果正確。
到此這篇關(guān)于java中Calendar.add()方法的使用的文章就介紹到這了,更多相關(guān)java Calendar.add()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java語言中flush()函數(shù)作用及使用方法詳解
這篇文章主要介紹了Java語言中flush函數(shù)作用及使用方法詳解,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Spring Boot 與 kotlin 使用Thymeleaf模板引擎渲染web視圖的方法
這篇文章主要介紹了Spring Boot 與 kotlin 使用Thymeleaf模板引擎渲染web視圖的方法,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下2018-01-01lambda表達(dá)式與傳統(tǒng)接口函數(shù)實(shí)現(xiàn)方式對比詳解
這篇文章主要為大家介紹了lambda表達(dá)式與傳統(tǒng)接口函數(shù)實(shí)現(xiàn)方式對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家度偶多進(jìn)步早日升職加薪2022-03-03Java正確實(shí)現(xiàn)一個單例設(shè)計模式的示例
今天小編就為大家分享一篇關(guān)于Java正確實(shí)現(xiàn)一個單例設(shè)計模式的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01Java死鎖_動力節(jié)點(diǎn)Java學(xué)院整理
死鎖是兩個甚至多個線程被永久阻塞時的一種運(yùn)行局面,這種局面的生成伴隨著至少兩個線程和兩個或者多個資源。在這里我已寫好一個簡單的程序,它將會引起死鎖方案然后我們就會明白如何分析它2017-06-06java ThreadPool線程池的使用,線程池工具類用法說明
這篇文章主要介紹了java ThreadPool線程池的使用,線程池工具類用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10