java中Calendar.add()方法的使用
Calendar的add方法來進(jìn)行對(duì)日期參數(shù)進(jìn)行相關(guān)的動(dòng)態(tài)改變;比如我們需要得到當(dāng)前年,月,日,小時(shí),分鐘,秒,毫秒的前面時(shí)間或者后面時(shí)間
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則代表的是對(duì)年份操作,2是對(duì)月份操作,3是對(duì)星期操作,5是對(duì)日期操作,11是對(duì)小時(shí)操作,12是對(duì)分鐘操作,13是對(duì)秒操作,14是對(duì)毫秒操作
ps:
Calendar calendar = Calendar.getInstance(); calendar.add(5, -1);
其中的5就表示對(duì)日期進(jìn)行操作,后面-1表示日期為前一天。
Calendar中add()和roll()函數(shù)的用法
一、取某個(gè)時(shí)間點(diǎn)后的整點(diǎn)時(shí)刻。例如1984年7月7日15:23:05后的整點(diǎn)時(shí)刻即為1984-07-07 16:00:00。
實(shí)現(xiàn)如下:
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR_OF_DAY, 1);//小時(shí)上加1 calendar.set(Calendar.MINUTE, 0);//分鐘設(shè)為0 calendar.set(Calendar.SECOND, 0);//秒鐘設(shè)為0
二、取某個(gè)日歷之前的某個(gè)月。例如要取2002年1月12號(hào)之前1個(gè)月的時(shí)間,應(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ù)處理,只會(huì)對(duì)相應(yīng)的字段進(jìn)行處理,不會(huì)智能的對(duì)其它字段也進(jìn)行邏輯上的改變。
add()函數(shù)會(huì)在邏輯上改變其它字段,使結(jié)果正確。
到此這篇關(guān)于java中Calendar.add()方法的使用的文章就介紹到這了,更多相關(guān)java Calendar.add()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Netty結(jié)合Protobuf進(jìn)行編解碼的方法
這篇文章主要介紹了Netty結(jié)合Protobuf進(jìn)行編解碼,通過文檔表述和代碼實(shí)例充分說明了如何進(jìn)行使用和操作,需要的朋友可以參考下2021-06-06
JavaWeb實(shí)現(xiàn)自動(dòng)登錄功能
這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)自動(dòng)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
分布式醫(yī)療掛號(hào)系統(tǒng)EasyExcel導(dǎo)入導(dǎo)出數(shù)據(jù)字典的使用
這篇文章主要為大家介紹了分布式醫(yī)療掛號(hào)系統(tǒng)EasyExcel導(dǎo)入導(dǎo)出數(shù)據(jù)字典的使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
SpringBoot自定義對(duì)象參數(shù)實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換與格式化
SpringBoot 通過自定義對(duì)象參數(shù),可以實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換與格式化,并可以級(jí)聯(lián)封裝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
SpringBoot詳解整合Spring?Cache實(shí)現(xiàn)Redis緩存流程
這篇文章主要介紹了SpringBoot整合Spring?Cache實(shí)現(xiàn)Redis緩存方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SpringCloud?OpenFeign?服務(wù)調(diào)用傳遞?token的場(chǎng)景分析
這篇文章主要介紹了SpringCloud?OpenFeign?服務(wù)調(diào)用傳遞?token的場(chǎng)景分析,本篇文章簡單介紹?OpenFeign?調(diào)用傳遞?header?,以及多線程環(huán)境下可能會(huì)出現(xiàn)的問題,其中涉及到?ThreadLocal?的相關(guān)知識(shí),需要的朋友可以參考下2022-07-07

