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