今天在開(kāi)發(fā)項(xiàng)目的時(shí)候遇到一個(gè)問(wèn)題就是怎么獲取當(dāng)前時(shí)間的前一天和后一天,這個(gè)實(shí)現(xiàn)的邏輯并不復(fù)雜,自己要寫(xiě)的話的也不是難事,但是貌似感覺(jué)沒(méi)必要自己寫(xiě)這樣的方法,想想Java中的Calendar類應(yīng)該有這樣的方法,所以上網(wǎng)查了相關(guān)的資料,有兩個(gè)方法:分別是set和roll方法,這兩個(gè)方法的具體使用方法如下:
package com.java.demo; import java.util.Calendar; public class DateUtil { public static void main(String[] args){ //當(dāng)前時(shí)間 Calendar cl = setCalendar(2014,01,01); System.out.print("當(dāng)前時(shí)間:"); printCalendar(cl); //前一天 cl = setCalendar(2014,01,01); getBeforeDay(cl); System.out.print("前一天:"); printCalendar(cl); //后一天 cl = setCalendar(2014,01,01); getAfterDay(cl); System.out.print("后一天:"); printCalendar(cl); } /** * 設(shè)置時(shí)間 * @param year * @param month * @param date * @return */ public static Calendar setCalendar(int year,int month,int date){ Calendar cl = Calendar.getInstance(); cl.set(year, month-1, date); return cl; } /** * 獲取當(dāng)前時(shí)間的前一天時(shí)間 * @param cl * @return */ private static Calendar getBeforeDay(Calendar cl){ //使用roll方法進(jìn)行向前回滾 //cl.roll(Calendar.DATE, -1); //使用set方法直接進(jìn)行設(shè)置 int day = cl.get(Calendar.DATE); cl.set(Calendar.DATE, day-1); return cl; } /** * 獲取當(dāng)前時(shí)間的后一天時(shí)間 * @param cl * @return */ private static Calendar getAfterDay(Calendar cl){ //使用roll方法進(jìn)行回滾到后一天的時(shí)間 //cl.roll(Calendar.DATE, 1); //使用set方法直接設(shè)置時(shí)間值 int day = cl.get(Calendar.DATE); cl.set(Calendar.DATE, day+1); return cl; } /** * 打印時(shí)間 * @param cl */ public static void printCalendar(Calendar cl){ int year = cl.get(Calendar.YEAR); int month = cl.get(Calendar.MONTH)+1; int day = cl.get(Calendar.DATE); System.out.println(year+"-"+month+"-"+day); } }上面的代碼就是說(shuō)明了set方法和roll方法的使用,傳入一個(gè)Calendar,進(jìn)行設(shè)置之后返回一個(gè)Calendar,但是roll和set有一個(gè)區(qū)別:為了測(cè)試出這兩個(gè)方法的卻別,我們將時(shí)間設(shè)置成一個(gè)邊界值:2014-01-01:看運(yùn)行效果:
是通過(guò)set方法進(jìn)行設(shè)置的時(shí)間的效果圖:
通過(guò)效果圖我們可以看到,set方法獲取前一天和后一天的時(shí)間是沒(méi)有任何問(wèn)題的。下面再來(lái)看一下roll方法獲取前一天和后一天的時(shí)間的效果圖:
我們發(fā)現(xiàn)在獲取前一天的時(shí)間的時(shí)候出現(xiàn)問(wèn)題了,就是2014-01-01獲取前一天是2014-01-31,由此我們可以看到,roll方法在獲取前一天和后一天的時(shí)候并不是級(jí)聯(lián)改動(dòng)的,只會(huì)修改當(dāng)前的day,而不會(huì)考慮year和month,當(dāng)然他在修改day的時(shí)候是一個(gè)循環(huán)的修改,如:1月份是:1-31,就是一個(gè)循環(huán)。
通過(guò)上面的分析我們看到了set方法和roll方法的卻別了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
