Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีดึงวันที่ด้วย LocalDate.datesUntil() ใน Java 9

เมธอด 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> ก้าวตาม step
  • until(other) - Period ระหว่าง 2 วันที่
  • periodUntil(other) - Period (alias)

datesUntil() ทำให้สร้าง date ranges และ sequences ได้ง่ายขึ้นมาก เหมาะสำหรับ scheduling, calendars, reports