> 文章列表 > 计算两个日期相差天数

计算两个日期相差天数

计算两个日期相差天数

计算两个日期相差的天数,看似简单实则可能存在坑

方法一 (最常用)

计算两个日期相差天数,按照自然日算,以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);}
计算两个日期相差天数

戒烟