Java 某個起始時間,固定的一個天數相加,計算週期每次加過後的週期
前言
項目中有這麼一個業務場景,數據庫中某張表有個起始時間,和一個累加時間,比如2020-01-07
,往後每次加3天爲一個週期,到2020-01-10
是週期1,到2020-01-13
是週期2,以此類推。通過Java可以直接計算出週期,然後進行數據庫操作。
代碼
/**
* 獲取某個日期和當前時間差幾天
*/
public static Long getDayPassed(Date beginDate) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Long days = null;
try {
Date currentTime = dateFormat.parse(dateFormat.format(new Date()));//現在系統當前時間
long diff = currentTime.getTime() - beginDate.getTime();
days = diff / (1000 * 60 * 60 * 24);
} catch (ParseException e) {
e.printStackTrace();
}
return days;
}
傳入數據庫中數據的起始時間,計算出距離當前時間相差多少天
int differNum = getDayPassed(rankPeriod.getBeginDate()).intValue();
// 拿到數據庫中配置的時間間隔
int cycle = rankPeriod.getCircleDay();
int period = Math.floorDiv(differNum, cycle);
if (differNum % cycle != 0) {
period = period + 2;
} else {
period = period + 1;
}
上面代碼的意思就在於,起始時間和當前時間相差多少天,比如2020-01-07
是當前時間,起始時間是2020-01-02
,相差了5天,數據庫配置的間隔天數是2天,通過Math.floorDiv
方法,兩個天數相除得到一個整數2,
再取兩個數的餘數,不爲0整除的話加2,最後得出的2020-01-02
到2020-01-07
有3個週期