--- old/src/java.base/share/classes/java/time/LocalDate.java 2016-01-16 18:41:05.443919400 +0600 +++ new/src/java.base/share/classes/java/time/LocalDate.java 2016-01-16 18:41:05.280398700 +0600 @@ -100,6 +100,8 @@ import java.time.zone.ZoneOffsetTransition; import java.time.zone.ZoneRules; import java.util.Objects; +import java.util.stream.LongStream; +import java.util.stream.Stream; /** * A date without a time-zone in the ISO-8601 calendar system, @@ -1714,6 +1716,89 @@ int months = (int) (totalMonths % 12); // safe return Period.of(Math.toIntExact(years), months, days); } + + /** + * Returns a sequential ordered stream of dates. The returned stream starts from this date + * (inclusive) and goes to {@code endExclusive} (exclusive) by an incremental step of 1 day. + *
+ * This method is equivalent to {@code datesUntil(endExclusive, Period.ofDays(1))}.
+ *
+ * @param endExclusive the end date, exclusive, not null
+ * @return a sequential {@code Stream} for the range of {@code LocalDate} values
+ * @throws IllegalArgumentException if end date is before this date
+ * @since 9
+ */
+ public Stream
+ * The n-th date which appears in the stream is equal to {@code this.plus(step.multipliedBy(n))}
+ * (but the result of step multiplication never overflows). For example, if this date is
+ * {@code 2015-01-31}, the end date is {@code 2015-05-01} and the step is 1 month, then the
+ * stream contains {@code 2015-01-31}, {@code 2015-02-28}, {@code 2015-03-31}, and
+ * {@code 2015-04-30}.
+ *
+ * @param endExclusive the end date, exclusive, not null
+ * @param step the non-zero, non-negative {@code Period} which represents the step.
+ * @return a sequential {@code Stream} for the range of {@code LocalDate} values
+ * @throws IllegalArgumentException if step is zero, or {@code step.getDays()} and
+ * {@code step.toTotalMonths()} have opposite sign, or end date is before this date
+ * and step is positive, or end date is after this date and step is negative
+ * @since 9
+ */
+ public Stream