LocalDate.datesUntil() 的语法

该方法有两种重载形式:

Stream<LocalDate> datesUntil(LocalDate end)
Stream<LocalDate> datesUntil(LocalDate end, Period step)

第一个版本(即没有 Period)在内部调用带有 Period.ofDays(1)的第二个方法,并生成相差 1 天的日期流。

Java 8 中生成日期流

import java.time.LocalDate;
import java.time.Period;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Java9StreamExamples {
    public static void main(String[] args) 
    {
        System.out.println( getDaysInJava8(LocalDate.now(), 10) );
    }
    //Stream of dates with 1 day difference
    public static List<LocalDate> getDaysInJava8(LocalDate start, int days) 
    {
        return Stream.iterate(start, date -> date.plusDays(1))
                .limit(days)
                .collect(Collectors.toList());
    }
}
Java 9 Stream datesUntil方法

Java 9 引入了一种新方法“LocalDate.datesUntil()”,它可以提供日期流。
使用 datesUntil()可以轻松创建具有固定偏移量的日期流。

on  It Road.com

使用 LocalDate.datesUntil() 的日期流示例

创建日期流:

import java.time.LocalDate;
import java.time.Period;
import java.util.List;
import java.util.stream.Collectors;
public class Java9StreamExamples {
    public static void main(String[] args) {
        System.out.println( getDaysInJava9(LocalDate.now(), LocalDate.now().plusDays(10)) );
        System.out.println( getDaysInJava9Weeks(LocalDate.now(), LocalDate.now().plusWeeks(10)) );
    }

    //Stream of dates with 1 day difference
    public static List<LocalDate> getDaysInJava9(LocalDate start, LocalDate end) {
        return start.datesUntil(end).collect(Collectors.toList());
    }

    //Stream of dates with 1 week difference
    public static List<LocalDate> getDaysInJava9Weeks(LocalDate start, LocalDate end) {
        return start.datesUntil(end, Period.ofWeeks(1)).collect(Collectors.toList());
    }
}
日期:2020-09-17 00:10:06 来源:oir作者:oir