Növekedési dátum Java-ban
1. Áttekintés
Ebben az oktatóanyagban megvizsgáljuk, hogyan lehet a dátumot egy nappal növelni a Java használatával. A Java 8 előtt a szokásos Java dátum és idő könyvtárak nem voltak túl felhasználóbarátak. Ezért a Joda-Time a Java 8 előtti de facto szabványos dátum- és időkönyvtárává vált.
Vannak más osztályok és könyvtárak is, amelyek felhasználhatók a feladat végrehajtására, például java.util.Naptár és az Apache Commons.
A Java 8 tartalmazott egy jobb dátum és idő API-t a régebbi könyvtárak hiányosságainak orvoslására.
Ezért nézzük hogyan lehet a dátumot egy nappal növelni a Java 8, Joda-Time API, Java használatával Naptár osztály és az Apache Commons könyvtár.
2. Maven-függőségek
A következő függőségeket kell felvenni a programba pom.xml fájl:
joda-time joda-time 2.10 org.apache.commons commons-lang3 3.5
Megtalálja a Joda-Time legújabb verzióját a Maven Centralon, valamint az Apache Commons Lang legújabb verzióját is.
3. Használata java.time
A java.time.LocalDate osztály változhatatlan dátum-idő reprezentáció, amelyet gyakran év-hónap-napnak tekintenek.
LocalDate sok módszer van a dátummanipulációra, nézzük meg, hogyan használhatjuk fel ugyanezen feladat végrehajtására:
public static String addOneDay (String date) {return LocalDate .parse (date) .plusDays (1) .toString (); }
Ebben a példában használjuk java.time.LocalDate osztály és annak plusDays () módszer a dátum egy nappal történő növelésére.
Most ellenőrizzük, hogy ez a módszer a várt módon működik-e:
@Test public void givenDate_whenUsingJava8_thenAddOneDay () dobja a {String incrementedDate = addOneDay ("2018-07-03") kivételt; assertEquals ("2018-07-04", incrementedDate); }
4. Használata java.util.Naptár
Egy másik megközelítés az java.util.Naptár és annak add () módszer a dátum növelésére.
Használjuk együtt java.text.SimpleDateFormat dátumformázási célokra:
public static String addOneDayCalendar (karakterlánc dátuma) dobja a ParseException {SimpleDateFormat sdf = új SimpleDateFormat ("éééé-hh-dd"); Naptár c = Naptár.getInstance (); c.setTime (sdf.parse (dátum)); c.add (Naptár.DÁTUM, 1); return sdf.format (c.getTime ()); }
java.text.SimpleDateFormat van-e biztosítva a várható dátumformátum használatát. A dátum a add () módszer.
Ismét győződjünk meg arról, hogy ez a megközelítés rendeltetésszerűen működik:
@Test public void givenDate_whenUsingCalendar_thenAddOneDay () dobja a (z) {String incrementedDate = addOneDayCalendar ("2018-07-03") kivételt; assertEquals ("2018-07-04", incrementedDate); }
5. A Joda-Time használata
A org.joda.time.DateTime osztály számos módszerrel rendelkezik, amelyek segítenek a dátum és az idő megfelelő kezelésében.
Nézzük meg, hogyan használhatjuk a dátum egy nappal történő növelésére:
public static String addOneDayJodaTime (String date) {DateTime dateTime = new DateTime (date); return dateTime .plusDays (1) .toString ("éééé-hh-nn"); }
Itt használjuk org.joda.time.DateTime osztály és annak plusDays () módszer a dátum egy nappal történő növelésére.
A következő egységteszt segítségével ellenőrizhetjük, hogy a fenti kód működik-e:
@Test public void givenDate_whenUsingJodaTime_thenAddOneDay () dobja a Kivételt {String incrementedDate = addOneDayJodaTime ("2018-07-03"); assertEquals ("2018-07-04", incrementedDate); }
6. Használata Apache Commons
Egy másik könyvtár, amelyet dátummanipulációra használnak (többek között), az Apache Commons. Ez egy sor segédprogram, amely körülveszi a java.util.Naptár és java.util.Dátum tárgyakat.
Feladatunkhoz használhatjuk a org.apache.commons.lang3.time.DateUtils osztály és annak addDays () módszer (vegye figyelembe, hogy SimpleDateFormat dátumformázáshoz):
public static String addOneDayApacheCommons (String date) dobja a ParseException {SimpleDateFormat sdf = new SimpleDateFormat ("éééé-HH-nn"); Dátum incrementedDate = DateUtils .addDays (sdf.parse (dátum), 1); return sdf.format (incrementedDate); }
Szokás szerint az egységellenőrzéssel ellenőrizzük az eredményeket:
@Test public void givenDate_whenUsingApacheCommons_thenAddOneDay () dobja a Kivételt {String incrementedDate = addOneDayApacheCommons ("2018-07-03"); assertEquals ("2018-07-04", incrementedDate); }
7. Következtetés
Ebben a gyors cikkben különféle megközelítéseket tekintettünk meg a dátum egy nappal történő növelésének egyszerű feladatának kezelésére. Bemutattuk, hogyan lehet megvalósítani a Java alapvető API-jai, valamint néhány népszerű harmadik fél könyvtár segítségével.
Az ebben a cikkben használt kódminták a GitHub oldalon találhatók.