提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LocalDate的compareTo方法学习
一、compareTo方法如何计算?
- 同年同月不同日,则结果为【日】的差值
- 同年不同月,则结果为【月份】的差值
- 不同年,则结果为【年份】的差值
源码计算方式如下:
int compareTo0(LocalDate otherDate) {
int cmp = (year - otherDate.year);
if (cmp == 0) {
cmp = (month - otherDate.month);
if (cmp == 0) {
cmp = (day - otherDate.day);
}
}
return cmp;
}
代码测试如下:
LocalDate now = LocalDate.now();
LocalDate before1 = LocalDate.of(2022, 3, 10);
// 当前时间(2022-3-30)- 2022-3-10 结果:20
// 同年同月不同日,则结果为【日】的差值
System.out.println(now.compareTo(before1));
LocalDate before2 = LocalDate.of(2022, 2, 10);
// 当前时间(2022-3-30)- 2022-2-10 结果:1
// 同年不同月,则结果为【月份】的差值
System.out.println(now.compareTo(before2));
LocalDate before3 = LocalDate.of(2021, 2, 10);
// 当前时间(2022-3-30)- 2021-2-10 结果:1
// 不同年,则结果为【年份】的差值
System.out.println(now.compareTo(before3));
二、如何计算2个日期的天数差
使用java.time.LocalDate#until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit)计算,通过指定计算单位计算对应结果。
代码如下:
// 当前时间(2022-3-30)- 2022-2-10 , 按天计算差值 结果:-48
System.out.println(now.until(before2, ChronoUnit.DAYS));