/**
* 获得指定日期添加指定天数后的0点
*
* @param date 指定日期
* @param plusDays 添加指定天数
* @return 指定日期添加指定天数后的0点
* @author hank
*/
public static Date getPlusDayInitial(Date date, long plusDays) {
LocalDateTime nextDayZeroLocalDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).plusDays(plusDays).withHour(0).withMinute(0).withSecond(0).withNano(0);
return Date.from(ZonedDateTime.of(nextDayZeroLocalDate, ZoneId.systemDefault()).toInstant());
}
比如获取昨天0点:
// 昨天0点
Date yesterdayZero = DateUtils.getPlusDayInitial(new Date(), -1);
// 今天0点
Date yesterdayZero = DateUtils.getPlusDayInitial(new Date(), 0);
// 明天0点
Date yesterdayZero = DateUtils.getPlusDayInitial(new Date(), 1);
// 后天0点
Date yesterdayZero = DateUtils.getPlusDayInitial(new Date(), 2);
// 十天后0点
Date yesterdayZero = DateUtils.getPlusDayInitial(new Date(), 10);
Date 和 LocalDateTime都是本地时间(指的是本地默认时区),具体的时间api比较可以参考:java中ZonedDateTime,LocalDateTime,Date,Calendar,Instant,timestamp的比较区别_hank009的博客-CSDN博客_zoneddatetime比较大小