LocalDate/LocalDateTime 时间差的计算
LocalDate在计算时间差的时候有所不同
第一种方法,使用 d1.until(d2, ChronoUnit.XXX),时间有前后顺序,其中ChronoUnit.DAYS 标记计算的是天数
public static void main(String[] args) {// 2023-05-31LocalDate date0 = LocalDate.of(2023, 5, 31);// 2023-04-29LocalDate date1 = LocalDate.of(2023, 5, 1).plusDays(-2);// 2023-05-31LocalDate date2 = LocalDate.of(2023, 5, 1).plusMonths(1).plusDays(-1);System.out.println("[2023-05-31 减 2023-04-29]相差: " + date0.until(date1, ChronoUnit.DAYS));System.out.println("[2023-05-31 减 2023-05-31]相差: " + date0.until(date2, ChronoUnit.DAYS));}
输出结果
[2023-05-31 减 2023-04-29]相差: -32 天
[2023-05-31 减 2023-05-31]相差: 0 天
第二种方法,使用 ChronoUnit.XXX.between(d1, d2),时间有前后顺序,其中ChronoUnit.DAYS说明计算的是天数
public static void main(String[] args) {// 2023-05-31LocalDate date0 = LocalDate.of(2023, 5, 31);// 2023-04-29LocalDate date1 = LocalDate.of(2023, 5, 1).plusDays(-2);// 2023-05-31LocalDate date2 = LocalDate.of(2023, 5, 1).plusMonths(1).plusDays(-1);System.out.println("[2023-05-31 减 2023-04-29]相差: " + ChronoUnit.DAYS.between(date0, date1));System.out.println("[2023-04-29 减 2023-05-31]相差: " + ChronoUnit.DAYS.between(date1, date0));}
输出结果
[2023-05-31 减 2023-04-29]相差: -32 天
[2023-04-29 减 2023-05-31]相差: 32 天
两种达成的效果是一样的
------------------------------------------------------------------------------------------------------------------------------
对于 d1.compareTo(d2) 计算结果,会根据年月日来确定输出结果
当年份不同,输出年份差值
当年份相同,月份不同,输出月份差值
当年份相同,月份相同,输出日期差值
public static void main(String[] args) {LocalDate date00 = LocalDate.of(2022, 7, 20);LocalDate date01 = LocalDate.of(2023, 5, 31);LocalDate date10 = LocalDate.of(2023, 3, 25);LocalDate date11 = LocalDate.of(2023, 5, 31);LocalDate date20 = LocalDate.of(2023, 7, 2);LocalDate date21 = LocalDate.of(2023, 7, 15);System.out.println("[年份不同]相差: " + date00.compareTo(date01));System.out.println("[年份相同,月份不同]相差: " + date10.compareTo(date11));System.out.println("[年份相同,月份相同,日期不同]相差: " + date20.compareTo(date21));}
输出结果
[年份不同]相差: -1 年
[年份相同,月份不同]相差: -2 月
[年份相同,月份相同,日期不同]相差: -13 天
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
