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

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