Java 计算两个日期之间相差的天数

本文介绍了一种使用Java中的Calendar类来计算两个日期之间相差的天数的方法,包括处理跨年情况的解决方案。通过实例代码演示了如何获取两个日期之间的天数间隔,适用于不同年份的日期计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://hi.baidu.com/oritenson/blog/item/bc595d5ae2ff38302934f000.html#0

Java 计算两个日期之间相差的天数(包括跨年情况)

计算的方法较多,我这里采用的是Calendar来实现计算两个Date之间相差几天。

非跨年情况:

     /**
     * This method is used to get interval days of exitDateFrom and exitDateTo
     */
    private static int getIntervalDaysOfExitDate(Date exitDateFrom, Date exitDateTo){
        Calendar cal = Calendar.getInstance();
        cal.setTime(exitDateFrom);
        int dayFrom = cal.get(Calendar.DAY_OF_YEAR);
        cal.setTime(exitDateTo);
        int dayTo = cal.get(Calendar.DAY_OF_YEAR);
        return dayTo - dayFrom;
    }

这个是我第一次写的方法,利用Calendar的DAY_OF_YEAR属性求两个DAY之间的天数,对于同一年的两个日期是管用的,但是当你输入非同年的日期时就会出现错误结果。下面为正确方法,对于所有情况都适用。

跨年情况:

    /**
     * This method is used to get interval days of exitDateFrom and exitDateTo
     */
    private static int getIntervalDaysOfExitDate2(Date exitDateFrom, Date exitDateTo){
        Calendar aCalendar = Calendar.getInstance();
        Calendar bCalendar = Calendar.getInstance();
        aCalendar.setTime(exitDateFrom);
        bCalendar.setTime(exitDateTo);
        int days = 0;
        while(aCalendar.before(bCalendar)){
            days++;
            aCalendar.add(Calendar.DAY_OF_YEAR, 1);
        }

        return days;
    }

====================================================

另外一种方式:

public static int compareDate(String time1, String time2)
   throws ParseException {
  DateFormat dateFormat = DateFormat.getDateInstance();
  Date date1 = dateFormat.parse(time1);
  Date date2 = dateFormat.parse(time2);
  long quot;
  quot = date1.getTime() - date2.getTime();
  quot = quot / 1000 / 60 / 60 / 24;
  int day = new Long(quot).intValue();
  return day;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值