计算两个日期相差天数

实际天数,而非超过24H才算一天。

public static int TwoDateMinus(Date d1, Date d2) {
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();

        cal1.setTime(d1);
        cal2.setTime(d2);

        //获取日期在一年(月、星期)中的第多少天
        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);

        //获取当前日期所在的年份
        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);

        //如果两个日期的是在同一年,则只需要计算两个日期在一年的天数差;
        //不在同一年,还要加上相差年数对应的天数,闰年有366天

        if (year1 != year2) {
            int timeDistance = 0;
            for (int i = year1; i < year2; i++) {
                //闰年
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                    timeDistance += 366;
                }
                //不是闰年
                else {
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2 - day1);
        } else {
            return day2 - day1;
        }
    }
在Java中,计算两个日期相差天数,可以通过使用`java.util.Date`和`java.util.Calendar`类来实现。以下是一个使用`Calendar`类计算两个日期相差天数的方法: 首先,我们需要获取两个日期对象,然后将这两个日期对象分别转换为`Calendar`实例。接着,我们可以清除时分秒等时间部分,只保留日期部分。之后,我们可以使用`Calendar`的`getTimeInMillis()`方法获取这两个日期的毫秒值,通过相减得到它们之间相差的毫秒数,最后将毫秒数转换为天数。 以下是一个计算两个日期相差天数的示例代码: ```java import java.util.Calendar; import java.util.Date; public class DateDifference { public static void main(String[] args) { // 假设有两个日期 Date startDate = new Date(); // 例如使用当前日期和时间 Date endDate = new Date(); // 使用另一个日期,比如未来的一天 // 计算两个日期相差天数 long differenceInDays = calculateDaysBetween(startDate, endDate); // 输出结果 System.out.println("相差天数为:" + differenceInDays); } private static long calculateDaysBetween(Date startDate, Date endDate) { Calendar startCalendar = Calendar.getInstance(); Calendar endCalendar = Calendar.getInstance(); startCalendar.setTime(startDate); endCalendar.setTime(endDate); // 清除时分秒 startCalendar.set(Calendar.HOUR_OF_DAY, 0); startCalendar.set(Calendar.MINUTE, 0); startCalendar.set(Calendar.SECOND, 0); startCalendar.set(Calendar.MILLISECOND, 0); endCalendar.set(Calendar.HOUR_OF_DAY, 0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值