计算两个日期相差天数

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

方法一 (最常用)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值