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个周期