Datum povećanja u Javi
1. Pregled
U ovom ćemo uputstvu pogledati načine za povećanje datuma za jedan dan pomoću Jave. Prije Jave 8, standardne Java knjižnice datuma i vremena nisu bile vrlo jednostavne za upotrebu. Stoga je Joda-Time postala de facto standardna knjižnica datuma i vremena za Javu prije Java 8.
Postoje i drugi razredi i knjižnice koji bi se mogli koristiti za izvršavanje zadatka, poput java.util.Kalendar i Apache Commons.
Java 8 sadržavao je bolji API za datum i vrijeme za rješavanje nedostataka svojih starijih knjižnica.
Stoga gledamo kako povećati datum za jedan dan koristeći Java 8, Joda-Time API, Java Kalendar razreda i biblioteke Apache Commons.
2. Ovisnosti Mavena
Sljedeće ovisnosti trebaju biti uključene u pom.xml datoteka:
joda-vrijeme joda-vrijeme 2.10 org.apache.commons commons-lang3 3.5
Najnoviju verziju Joda-Time možete pronaći na Maven Central, a također i najnoviju verziju Apache Commons Lang.
3. Korištenje java.vrijeme
The java.time.LocalDate razred je nepromjenjiv prikaz datuma i vremena, često promatran kao godina-mjesec-dan.
LocalDate ima mnogo metoda za manipulaciju datumima, pogledajmo kako to možemo koristiti za postizanje istog zadatka:
javni statički niz addOneDay (datum niza) {return LocalDate .parse (datum) .plusDays (1) .toString (); }
U ovom primjeru koristimo java.time.LocalDate razreda i svoje plusDays () metoda za povećavanje datuma za jedan dan.
Sada, provjerimo radi li ova metoda kako se očekivalo:
@Test public void givenDate_whenUsingJava8_thenAddOneDay () baca izuzetak {String incrementedDate = addOneDay ("03.07.2018."); assertEquals ("04.07.2018., uvećaniDatum); }
4. Korištenje java.util.Kalendar
Drugi pristup je korištenje java.util.Kalendar I je dodati() metoda za povećanje datuma.
Koristit ćemo ga zajedno s java.text.SimpleDateFormat za formatiranje datuma:
javni statički String addOneDayCalendar (datum niza) baca ParseException {SimpleDateFormat sdf = novi SimpleDateFormat ("yyyy-MM-dd"); Kalendar c = Calendar.getInstance (); c.setTime (sdf.parse (datum)); c.add (Calendar.DATE, 1); vratiti sdf.format (c.getTime ()); }
java.text.SimpleDateFormat postoji li kako bi se osiguralo da se koristi format očekivanog datuma. Datum se povećava putem dodati() metoda.
Još jednom, pobrinimo se da ovaj pristup funkcionira kako je predviđeno:
@Test public void givenDate_whenUsingCalendar_thenAddOneDay () baca iznimku {String incrementedDate = addOneDayCalendar ("03.07.2018."); assertEquals ("04.07.2018., uvećaniDatum); }
5. Korištenje Joda-Timea
The org.joda.time.DateTime razred ima mnogo metoda koje pomažu u ispravnom rješavanju datuma i vremena.
Pogledajmo kako ga možemo koristiti za povećavanje datuma za jedan dan:
javni statički niz addOneDayJodaTime (datum niza) {DateTime dateTime = novi datum (Time); vrati datumTime .plusDays (1) .toString ("yyyy-MM-dd"); }
Evo, koristimo org.joda.time.DateTime razreda i svoje plusDays () metoda za povećavanje datuma za jedan dan.
Možemo provjeriti funkcionira li gornji kod sa sljedećim jediničnim testom:
@Test public void givenDate_whenUsingJodaTime_thenAddOneDay () baca iznimku {String incrementedDate = addOneDayJodaTime ("03.07.2018."); assertEquals ("04.07.2018., uvećaniDatum); }
6. Korištenje Apache Commons
Druga biblioteka koja se obično koristi za manipulaciju datumima (između ostalog) je Apache Commons. To je paket uslužnih programa koji okružuju upotrebu java.util.Kalendar i java.util.Datum predmeta.
Za naš zadatak možemo koristiti org.apache.commons.lang3.time.DateUtils razreda i svoje addDays () metoda (imajte na umu da SimpleDateFormat ponovno se koristi za formatiranje datuma):
javni statički niz addOneDayApacheCommons (datum niza) baca ParseException {SimpleDateFormat sdf = novi SimpleDateFormat ("yyyy-MM-dd"); Datum incrementedDate = DateUtils .addDays (sdf.parse (datum), 1); vrati sdf.format (crementedDate); }
Kao i obično, rezultate ćemo provjeriti jediničnim testom:
@Test public void givenDate_whenUsingApacheCommons_thenAddOneDay () baca iznimku {String incrementedDate = addOneDayApacheCommons ("03.07.2018."); assertEquals ("04.07.2018., uvećaniDatum); }
7. Zaključak
U ovom smo kratkom članku pogledali različite pristupe rješavanju jednostavnog zadatka povećavanja datuma za jedan dan. Pokazali smo kako se to može postići upotrebom osnovnih Java-ovih API-ja, kao i nekih popularnih knjižnica trećih strana.
Uzorci koda korišteni u ovom članku mogu se naći na GitHubu.