LocalDate.datesUntil() tạo Stream<LocalDate> giữa 2 LocalDate, có thể chỉ định step size. 2 overload:
datesUntil(LocalDate end): Stream ngày từ date này đến endDate (exclusive).datesUntil(LocalDate end, Period step): Step nhảy (VD: 1 tháng, 1 tuần...).
Cú pháp
public Stream<LocalDate> datesUntil(LocalDate end) public Stream<LocalDate> datesUntil(LocalDate end, Period step)
Ví dụ
import java.time.LocalDate;
import java.time.Period;
import java.time.Month;
import java.util.stream.Stream;
public class DatesUntilMethodTest {
public static void main(String args[]) {
final LocalDate myBirthday = LocalDate.of(1980, Month.AUGUST, 8);
final LocalDate christmas = LocalDate.of(1980, Month.DECEMBER, 25);
System.out.println("Day-Stream:\n");
final Stream<LocalDate> daysUntil = myBirthday.datesUntil(christmas);
daysUntil.skip(50).limit(10).forEach(System.out::println);
System.out.println("\nMonth-Stream:\n");
Stream<LocalDate> monthsUntil = myBirthday.datesUntil(christmas, Period.ofMonths(1));
monthsUntil.limit(5).forEach(System.out::println);
}
}
Kết quả
Day-Stream: 1980-09-27 1980-09-28 1980-09-29 1980-09-30 1980-10-01 1980-10-02 1980-10-03 1980-10-04 1980-10-05 1980-10-06 Month-Stream: 1980-08-08 1980-09-08 1980-10-08 1980-11-08 1980-12-08
Giải thích
- Day-Stream: Tất cả ngày từ 8/8 đến 25/12 (exclusive).
skip(50)bỏ 50 ngày đầu,limit(10)lấy 10 ngày tiếp. - Month-Stream: Step = 1 tháng (
Period.ofMonths(1)). Lấy 5 tháng đầu: 8/8, 9/8, 10/8, 11/8, 12/8.
Ứng dụng thực tế
- Tạo lịch sự kiện định kỳ (meeting hàng tuần, billing hàng tháng).
- Generate date range cho report, chart.
- Business day calculation (kết hợp filter skip weekend).
- Test data generation cho date-sensitive logic.
Ví dụ: Business days (bỏ weekend)
LocalDate start = LocalDate.of(2024, 1, 1);
LocalDate end = LocalDate.of(2024, 1, 31);
List<LocalDate> businessDays = start.datesUntil(end)
.filter(d -> d.getDayOfWeek().getValue() < 6) // Mon-Fri
.collect(Collectors.toList());
datesUntil() làm cho date range generation trở nên declarative, functional, composable với Stream API.