Hogyan szerezhetem meg az összes dátumot két dátum között?

1. Áttekintés

A Java 8-ban bevezetett új Time API lehetővé tette a dátum és idő feldolgozását külső könyvtárak használata nélkül.

Ebben a rövid bemutatóban megvizsgáljuk, hogy az összes dátum megszerzése két dátum között az idő múlásával hogyan válik könnyebbé a Java különböző verzióiban.

2. A Java 7 használata

A Java 7-ben a számítás egyik módja a Naptár például egy ciklus futtatása és az egyes iterációkhoz 1 nap hozzáadása az add metódus és a segítségével Naptár. Dátum mezőegység elérte a befejezés dátumát.

Itt van a kód, amely bemutatja - használ Naptár példa:

public static list getDatesBetweenUsingJava7 (Date startDate, Date endDate) {List dateInRange = new ArrayList (); Naptári naptár = new GregorianCalendar (); calendar.setTime (startDate); Naptár endCalendar = új GregorianCalendar (); endCalendar.setTime (endDate); while (calendar.before (endCalendar)) {Dátum eredménye = calendar.getTime (); dateInRange.add (eredmény); calendar.add (Calendar.DATE, 1); } visszatérési dátumokInRange; }

3. A Java 8 használata

A Java 8-ban most létrehozhatunk egy folytonos végtelenet Folyam dátumokat, és csak a vonatkozó részt foglalja el. Sajnálatos módon, nincs mód a végtelen megszüntetésére Folyam amikor egy állítmány összeillik - ezért ki kell számolnunk a két nap közötti napok számát, majd egyszerűen határ() a Folyam:

public static list getDatesBetweenUsingJava8 (LocalDate startDate, LocalDate endDate) {long numOfDaysBetween = ChronoUnit.DAYS.between (startDate, endDate); adja vissza az IntStream.iterate (0, i -> i + 1) .limit (numOfDaysBetween) .mapToObj (i -> startDate.plusDays (i)) .collect (Collectors.toList ()); } 

Figyelje meg, hogyan kaphatjuk meg először a két dátum közötti napok különbségét a között függvény - társítva NAPOK állandója ChronoUnit felsorolás.

Ezután létrehozunk egy Folyam a kezdő dátum óta eltelt napok számát képviselő egész szám. A következő lépésben egész számunkat konvertáljuk LocalDate objektumokat a plusDays () API.

Végül mindent egy listapéldányba gyűjtünk.

4. A Java 9 használata

Végül a Java 9 dedikált módszereket kínál ennek kiszámítására:

public static list getDatesBetweenUsingJava9 (LocalDate startDate, LocalDate endDate) {return startDate.datesUntil (endDate) .collect (Collectors.toList ()); }

Két dátum közötti dátumokat egyetlen módszerrel hívhatjuk meg a dedikált felhasználásával dátumok módszer a LocalDate osztály. A dátumokig a sorrendben rendezett értéket adja vissza Folyam a dátum objektumtól kezdődő dátumok, amelynek metódusát a metódus argumentumként megadott dátumra hívják meg.

5. Következtetés

Ebben a gyors cikkben megvizsgáltuk, hogyan kaphatunk két dátum közötti összes dátumot a Java különböző verzióinak használatával.

Megbeszéltük, hogy a Java 8 kiadásban bevezetett Time API hogyan könnyítette meg a műveletek futtatását a dátum literálok felett, és a Java 9-ben, csak hívással dátumok.

És mint mindig, a kódrészletek is megtalálhatók a GitHubon.