通過傳入時間天數(整型)來獲取到時間差
阿新 • • 發佈:2018-12-30
1、在做專案開發的時候可能會遇到通過進行時間篩選來獲取到相應的資料,如果是兩個時間運算當然好運算了,可是如果是一個是整形一個是時間型別呢?下面有一個工具類,是博主自己寫的,如果有需要,可以直接拿來用
package com.mc.web.application.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @Author: mcxw * @Date: 2018-11-08 * @Descripion **/ public class DateUtil { /** * 通過傳入天數來獲得之前的時間 * 比如今天2018-12-26 傳入3天前 可以獲得2018-12-24 * 要求必須是30天之前,不然會報錯 * */ public static String time(int times){ String nowTime =""; //獲取到當天的時間 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String todayTime = sdf.format(date); //獲取到當天的“日” int day = Integer.valueOf(todayTime.substring(8, 10)); //將當前的“日”和傳過來的“天數”進行相減 int chooseDay = 0; chooseDay = day - times+1; //年 int year = Integer.valueOf(todayTime.substring(0,4)); //月 int month = Integer.valueOf(todayTime.substring(5, 7));//獲取到月的日期 //獲取到時分秒 String hms = todayTime.substring(11,todayTime.length()); if (chooseDay < 0) {//如果相減以後小於零,就要對月進行處理 int n = 0; //判斷上一個月是30天還是31天 switch (month) { case 1: year=year-1;//2019變成了2018 month =12;//月份為12月份 day = day + 31;//天數 chooseDay = day-times+1;//包含了今天,要+1 break; case 3: month = month-1; day = day + 31; chooseDay = day-times+1; break; case 5: month = month-1; day = day + 31; chooseDay = day-times+1; break; case 7: month = month-1; day = day + 31; chooseDay = day-times+1; break; case 8: month = month-1; day = day + 31; chooseDay = day-times+1; break; case 10: month = month-1; day = day + 31; chooseDay = day-times+1; break; case 12: month = month-1; day = day + 31; chooseDay = day-times+1; break; //對於2月份需要判斷是否為閏年 case 2: if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { month = month-1; day = day + 29; chooseDay = day-times;//比如在3月1號的時候選 if(chooseDay == 0){ chooseDay = 29;//跳回到29號 } break; } else { month = month-1; day = day + 28; chooseDay = day-times;//比如在3月1號或者3月2號的時候的時候選 if (chooseDay == 0 || chooseDay == -1){ chooseDay = 28; } break; } case 4: day = day + 30; month = month-1; chooseDay = day-times+1;break; case 6: day = day + 30; month = month-1; chooseDay = day-times+1;break; case 9: day = day + 30;month = month-1;chooseDay = day-times+1; break; case 11: day = day + 30; month = month-1;chooseDay = day-times+1; break; default: return "輸入的天數必須是30天之前"; } //最後輸出時間 System.out.println("傳入過去的時間為"+nowTime); nowTime = ""+year+"-"+month+"-"+chooseDay+" "+hms; }else{ nowTime = ""+year+"-"+month+"-"+chooseDay+" "+hms; } return nowTime; } }
思路:1、獲取到當前的時間,然後將時間轉成字串,之後,擷取當前的“日”
2、與你傳過來的“日”(引數)進行計算,有一點要注意,月份不同,天數有時會不同,所以,可以利用switch來進行判斷 月份,同時也要注意判斷2月份是否為閏年,最後進行計算。
3、最後,對時間進行拼接,就是你傳入天數後計算出來的時間。
注意:如果你不想包含今天,那麼在計算天數的時候要把“+1”給去掉,比如今天是12月30號,你想看三天前的,不包含今天的,那麼時間段為12月26日至12月29日。