获取前几天的开始时间,这里以前7天为例
/**
* 获取前7天开始时间 :2022-11-20 00:00:00
* @param day day
* @return Date
* @throws ParseException ParseException
*/
public static Date preSevenDate(int day) throws ParseException {
SimpleDateFormat simpleDateFormat=new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
Calendar calendar = Calendar.getInstance();
//获取到前7天的日期
calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) -day);
String today = simpleDateFormat.format(calendar.getTime());
Date newDate=simpleDateFormat.parse(today);
//date转localDate
Instant instant = newDate.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
LocalDateTime todayStart = LocalDateTime.of(localDate, LocalTime.MIN);
// localDate转Date
return Date.from(todayStart.toInstant(ZoneOffset.of("+8")));
}
获取当天时间的最后时间,也可以传具体时间去获取;
/**
* 获取当前时间的最后时间 2022-11-27 23:59:59
* @return Date
*/
public static Date nowDate(Date date) throws ParseException {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
ZoneId.systemDefault());
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
统计两个时间之间相差几个小时
/**
* 计算两个日期相差小时数
*
* @param startDate startDate
* @param endDate endDate
* @return int
*/
public static int getDifferHour(Date startDate, Date endDate) {
long dayM = 1000 * 24 * 60 * 60;
long hourM = 1000 * 60 * 60;
long differ = endDate.getTime() - startDate.getTime();
long hour = differ % dayM / hourM + 24 * (differ / dayM);
return Integer.parseInt(String.valueOf(hour));
}
/**
* false后7天 true前7天
* 获取传入时间的前7天以及后7天的开始时间
*/
public static String setMinTimeOfDays(Date date,String yearDate,int day,boolean flag) {
Calendar c = Calendar.getInstance();
try {
date = new SimpleDateFormat(YYYY_MM_DD).parse(yearDate);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int tempDate=c.get(Calendar.DATE);
if (flag){
c.set(Calendar.DATE,tempDate-day);
}else {
c.set(Calendar.DATE,tempDate+day);
}
return new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS).format(c.getTime());
}
调用
需要获取最后时间 再次调用上面获取当天组后时间