Dátum prírastku v Jave
1. Prehľad
V tomto výučbe sa pozrieme na spôsoby, ako pomocou Java zväčšiť dátum o jeden deň. Pred programom Java 8 neboli štandardné knižnice dátumu a času Java veľmi užívateľsky prívetivé. Preto sa Joda-Time stal de facto štandardnou knižnicou dátumu a času pre Javu pred Javou 8.
Na splnenie úlohy existujú napríklad aj iné triedy a knižnice java.util.Calendar a Apache Commons.
Java 8 obsahovala lepšie API dátumu a času na riešenie nedostatkov svojich starších knižníc.
Preto sa pozeráme na ako zvýšiť dátum o jeden deň pomocou Java 8, Joda-Time API, Java Kalendár triedy a knižnica Apache Commons.
2. Maven závislosti
Nasledujúce závislosti by mali byť súčasťou pom.xml spis:
joda-time joda-time 2.10 org.apache.commons commons-lang3 3.5
Najnovšiu verziu Joda-Time nájdete na serveri Maven Central a tiež najnovšiu verziu Apache Commons Lang.
3. Používanie java.time
The java.time.LocalDate trieda je nemenná reprezentácia dátumu a času, často sa považuje za rok-mesiac-deň.
LocalDate má veľa metód na manipuláciu s dátumom, pozrime sa, ako ho môžeme použiť na splnenie rovnakej úlohy:
public static String addOneDay (String date) {return LocalDate .parse (date) .plusDays (1) .toString (); }
V tomto príklade používame java.time.LocalDate trieda a jej plusDays () metóda na zvýšenie dátumu o jeden deň.
Teraz si overme, či táto metóda funguje podľa očakávania:
@Test public void givenDate_whenUsingJava8_thenAddOneDay () vyvolá výnimku {String incrementedDate = addOneDay ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }
4. Používanie java.util.Calendar
Ďalším prístupom je použitie java.util.Calendar a jeho pridať () metóda na zvýšenie dátumu.
Použijeme ho spolu s java.text.SimpleDateFormat pre účely formátovania dátumu:
public static String addOneDayCalendar (String date) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd"); Kalendár c = Calendar.getInstance (); c.setTime (sdf.parse (dátum)); c.add (Calendar.DATE, 1); návrat sdf.format (c.getTime ()); }
java.text.SimpleDateFormat slúži na zabezpečenie použitia očakávaného formátu dátumu. Dátum sa predlžuje prostredníctvom pridať () metóda.
Ešte raz sa uistite, či tento prístup funguje podľa očakávaní:
@Test public void givenDate_whenUsingCalendar_thenAddOneDay () vyvolá výnimku {String incrementedDate = addOneDayCalendar ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }
5. Používanie Joda-Time
The org.joda.time.DateTime trieda má veľa metód, ktoré pomáhajú správne narábať s dátumom a časom.
Pozrime sa, ako ho môžeme použiť na zväčšenie dátumu o jeden deň:
verejný statický reťazec addOneDayJodaTime (dátum reťazca) {DateTime dateTime = nový DateTime (dátum); návrat dateTime .plusDays (1) .toString ("rrrr-MM-dd"); }
Tu používame org.joda.time.DateTime trieda a jej plusDays () metóda na zvýšenie dátumu o jeden deň.
Môžeme overiť, že vyššie uvedený kód funguje pomocou nasledujúceho testu jednotky:
@Test public void givenDate_whenUsingJodaTime_thenAddOneDay () vyvolá výnimku {String incrementedDate = addOneDayJodaTime ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }
6. Používanie Apache Commons
Ďalšou knižnicou bežne používanou na manipuláciu s dátumami (okrem iného) je Apache Commons. Je to sada nástrojov obklopujúcich použitie java.util.Calendar a java.util.Date predmety.
Na našu úlohu môžeme použiť org.apache.commons.lang3.time.DateUtils trieda a jej addDays () metóda (všimnite si, že SimpleDateFormat sa opäť používa na formátovanie dátumu):
public static String addOneDayApacheCommons (String date) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd"); Date incrementedDate = DateUtils .addDays (sdf.parse (date), 1); návrat sdf.format (incrementedDate); }
Ako obvykle, výsledky overíme jednotkovým testom:
@Test public void givenDate_whenUsingApacheCommons_thenAddOneDay () vyvolá výnimku {String incrementedDate = addOneDayApacheCommons ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }
7. Záver
V tomto rýchlom článku sme sa pozreli na rôzne prístupy k riešeniu jednoduchej úlohy zvyšovania dátumu o jeden deň. Ukázali sme, ako je to možné dosiahnuť pomocou základných rozhraní API Java, ako aj niektorých populárnych knižníc tretích strán.
Ukážky kódu použité v tomto článku nájdete na GitHub.