เมธอด LocalDate.datesUntil() สร้าง stream ระหว่าง 2 local date instances และอนุญาตให้ระบุ step size ได้ เพื่อเลือกเฉพาะบางวันที่ มี 2 รูปแบบ: รูปแรกรับ end date คืนวันที่ระหว่าง current date ถึง end date รูปที่สองรับ Period object ให้วิธี ข้ามวันที่ และ stream เฉพาะ subset ระหว่าง start และ end dates
ไวยากรณ์
public Stream<LocalDate> datesUntil(LocalDate end)
public Stream<LocalDate> datesUntil(LocalDate end, Period step)
ตัวอย่างการใช้งาน
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");
final Stream monthsUntil = myBirthday.datesUntil(christmas, Period.ofMonths(1));
monthsUntil.limit(5).forEach(System.out::println);
}
}
ผลลัพธ์
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
คำอธิบาย
- Day-Stream: datesUntil(christmas) สร้าง stream ทุกวัน จาก 1980-08-08 ถึง 1980-12-24 (ไม่รวม 25) skip 50 วันแรก limit 10 วัน
- Month-Stream: datesUntil(christmas, Period.ofMonths(1)) สร้าง stream ทุก 1 เดือน ได้ 5 วันที่
Period สำหรับ step
Period.ofDays(1) // ทุกวัน (default)
Period.ofWeeks(1) // ทุกสัปดาห์
Period.ofMonths(1) // ทุกเดือน
Period.ofYears(1) // ทุกปี
Period.of(1, 2, 3) // 1 ปี 2 เดือน 3 วัน
เมธอดที่เกี่ยวข้อง
datesUntil(end) - Stream<LocalDate> ทุกวันdatesUntil(end, step) - Stream<LocalDate> ก้าวตาม stepuntil(other) - Period ระหว่าง 2 วันที่periodUntil(other) - Period (alias)
datesUntil() ทำให้สร้าง date ranges และ sequences ได้ง่ายขึ้นมาก เหมาะสำหรับ scheduling, calendars, reports