Java8
java8
中计算2个日期时间之间相差多少月
方法一 (计算时不计算天)
DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM");
//未来时间
LocalDate afterDate = LocalDate.of(2021, 1, 9);
YearMonth afterMonth = YearMonth.parse(sdf.format(afterDate), sdf);
// 过去时间
LocalDate beforeDate = LocalDate.of(2019, 2, 10);
YearMonth beforeMonth = YearMonth.parse(sdf.format(beforeDate), sdf);
int monDif = afterMonth.getMonthValue() - beforeMonth.getMonthValue();
System.out.println("monDif:" + monDif);
int month = (afterMonth.getYear() - beforeMonth.getYear())*12;
System.out.println("month:"+ month);
System.out.println("month+monDif:" + (month+monDif));
方法 2 (推荐, 计算时还会把天也计算上)
LocalDate afterDate = LocalDate.of(2021, 1, 9);
LocalDate beforeDate = LocalDate.of(2019, 2, 10);
//月数
long betweenMONTHS = ChronoUnit.MONTHS.between(beforeDate, afterDate);
//年数
long between1YEARS = ChronoUnit.YEARS.between(beforeDate, afterDate);
//天数
long between1DAYS = ChronoUnit.DAYS.between(beforeDate, afterDate);
System.out.println(betweenMONTHS);
System.out.println(between1YEARS);
System.out.println(between1DAYS);