日付のStream生成 Java9 で追加がある。

Java8 までは、過去書いたように、、、
LocalDate の Stream 生成 - Oboe吹きプログラマの黙示録
Stream で LocalDateリストを生成 - Oboe吹きプログラマの黙示録
Java で横長カレンダーを書くための処理 - Oboe吹きプログラマの黙示録
のように、LocalDate の Stream の Iterator あるいは、IntStream で期間の範囲のSteam 生成をしていた。

LocalDate start = LocalDate.of(2017, 11, 28);
LocalDate end   = LocalDate.of(2017, 12, 5);

の時に、

Stream<LocalDate> stream
 = Stream.iterate(start, t->t.plusDays(1)).limit(Period.between(start, end).getDays() + 1);

あるいは、、

Stream<LocalDate> stream
= IntStream.rangeClosed(1, Period.between(start, end).getDays()).mapToObj(i->start.plusDays(i));

Java9 で、Jigsaw 以外の機能追加は、Stream の of の他に、limit が数値しか渡せず不便であったのをカバーするような
dropWhile(Predicate predicate)
takeWhile(Predicate predicate)

が追加されたことがよく、focus されている。
この ~まで、という考え方は、日付クラス LocalDate にも期間の Stream 生成でも
Java9 では以下のメソッドが追加された。
public Stream datesUntil(LocalDate endExclusive)
public Stream datesUntil(LocalDate endExclusive, Period step)

LocalDate start = LocalDate.of(2017, 11, 28);
LocalDate end   = LocalDate.of(2017, 12, 5);

Stream<LocalDate> stream = start.datesUntil(end.plusDays(1));

と簡潔に書けてしまうのである。

LocalDate start = LocalDate.of(2017, 11, 28);
LocalDate end   = LocalDate.of(2017, 12, 5);
start.datesUntil(end, Period.ofDays(2)).forEach(System.out::println);

と書けば、結果は、以下のよぅになる。

2017-11-28
2017-11-30
2017-12-02
2017-12-04