这几天给项目组同事做代码评审,刚好看到一段求两个日期之间的天数,看完后觉得写的太复杂(采用获取两个日期的毫秒数,相减后再除以一天的毫秒数得到天数),刚好项目用的是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));
}
}