Java 计算两个日期的间隔天数

两个日期的间隔天数应用场景很多,自己一开始写得是使用两个日期的毫秒数之差再除以一天的毫秒数算出天数,但是这种方法获得的值会出现不准确的问题。发现通过Calender考虑是否跨年来实现。

package com.youdao.adapmathserver.util;

import java.time.LocalDate;
import java.util.Calendar;

/**
 * @author soul
 * @version 2019/11/14
 */
public class DateUtil {

     public static int differentDays(Date startDate, Date endDate) {
        Calendar startCalender = Calendar.getInstance();
        startCalender.setTime(startDate);

        Calendar endCalender = Calendar.getInstance();
        endCalender.setTime(endDate);
        int startDay = startCalender.get(Calendar.DAY_OF_YEAR);
        int endDay = endCalender.get(Calendar.DAY_OF_YEAR);

        int startYear = startCalender.get(Calendar.YEAR);
        int endYear = endCalender.get(Calendar.YEAR);
        if (startYear != endYear) {
            int timeDistance = 0;
            for (int i = startYear; i < endYear; i++) {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                    timeDistance += 366;
                } else {
                    timeDistance += 365;
                }
            }

            return timeDistance + (endDay - startDay);
        } else {
            return endDay - startDay;
        }
    }
}


编程   Java      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!