Java8 实现计算两个日期之间的天数

时间:2021-01-13 22:05:50

这几天给项目组同事做代码评审,刚好看到一段求两个日期之间的天数,看完后觉得写的太复杂(采用获取两个日期的毫秒数,相减后再除以一天的毫秒数得到天数),刚好项目用的是java8,就想到用java8 新的Java日期/时间API 实现一个更加简洁的方法

package test;

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

/**
 * @author kevin
 * java8 计算两个日期之间的天数
 */
public interface DateUtil {

    /**
     * 计算当前日期与{@code endDate}的间隔天数
     *
     * @param endDate
     * @return 间隔天数
     */
     static long until(LocalDate endDate){
      return LocalDate.now().until(endDate, ChronoUnit.DAYS);
    }

    /**
     * 计算日期{@code startDate}与{@code endDate}的间隔天数
     *
     * @param startDate
     * @param endDate
     * @return 间隔天数
     */
    static long until(LocalDate startDate, LocalDate endDate){
        return startDate.until(endDate, ChronoUnit.DAYS);
    }



}
测试代码:

package test;

import java.time.LocalDate;
import java.time.Month;

public class DateTest {
    public static void main(String[] args) {
      LocalDate startDate =  LocalDate.of(2017, Month.DECEMBER,5);
        LocalDate endDate =  LocalDate.of(2017, Month.DECEMBER,20);

        System.out.println(DateUtil.until(startDate));
        System.out.println(DateUtil.until(startDate,endDate));
    }
}