Java获取两个日期之间的所有日期列表

以下演示的是获取日期之间的所有日期列表,如果要获取两个时间之间的时间列表,只需要将 LocalDate 换成 LocalTime 或者 LocalDateTime,相应的方法也改为基于小时或分钟进行加减即可,对于获取两个日期之间的所有日期,Java8、9提供了不同的方法,具体代码实现如下:

Java9

        LocalDate startDate = LocalDate.now();
        LocalDate endDate = startDate.plusMonths(2);

        List<LocalDate> listOfDates = startDate.datesUntil(endDate)
                .collect(Collectors.toList());

        listOfDates.forEach(item->{
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            System.out.println(dateTimeFormatter.format(item));
        });

 

Java8

方法1

        LocalDate startDate = LocalDate.now();
        LocalDate endDate = startDate.plusMonths(2);

        long numOfDays = ChronoUnit.DAYS.between(startDate, endDate);

        List<LocalDate> listOfDates1 = Stream.iterate(startDate, date -> date.plusDays(1))
                .limit(numOfDays)
                .collect(Collectors.toList());

        listOfDates1.forEach(item->{
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            System.out.println(dateTimeFormatter.format(item));
        });

方法2

        LocalDate startDate = LocalDate.now();
        LocalDate endDate = startDate.plusMonths(2);

        long numOfDays = ChronoUnit.DAYS.between(startDate, endDate);

        List<LocalDate> listOfDates2 = LongStream.range(0, numOfDays)
                .mapToObj(startDate::plusDays)
                .collect(Collectors.toList());


        listOfDates2.forEach(item->{
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            System.out.println(dateTimeFormatter.format(item));
        });

欢迎在评论中提出你的问题,学习愉快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值