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 天


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部