计算两个日期相差天数
方法一 (最常用)
计算两个日期相差天数,按照自然日算,以00点为分界点
/* 计算两个日期相差天数,自然日* @param start 开始时间* @param end 结束时间* @return*/public static long daysBetween(Date start, Date end) {LocalDate localDate_start = start.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();LocalDate localDate_end = end.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();return Math.abs(localDate_end.toEpochDay() - localDate_start.toEpochDay());}
方法二
计算两个日期相差天数,相差24小时才算作间隔一天
例如:2023-02-26 10:10:10 和 2023-02-27 09:10:10 相差不足24小时,两个日期计算后得到结果为:相隔 0 天。
/* 计算两个日期相差天数,相差24小时才算作隔一天* @param start 开始时间* @param end 结束时间* @return*/public static long daysBetween(long start, long end) {long time = Math.abs(end - start);return time / 1000 / 60 / 60 / 24;}
测试方法:
public static void main(String[] args) throws ParseException {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date start = df.parse("2023-02-26 10:10:10");Date end = df.parse("2023-02-27 09:10:10");long day = DateUtil.daysBetween(start,end);System.out.println("时间差 "+day);long day2 = DateUtil.daysBetween(start.getTime(), end.getTime());System.out.println("时间差 "+day2);}
