Økningsdato i Java

1. Oversikt

I denne opplæringen vil vi se på måter å øke datoen på en dag ved hjelp av Java. Før Java 8 var standard Java-dato- og tidsbibliotekene ikke veldig brukervennlige. Derfor ble Joda-Time det faktiske standard dato- og tidsbiblioteket for Java før Java 8.

Det er også andre klasser og biblioteker som kan brukes til å utføre oppgaven, som java.util.Kalender og Apache Commons.

Java 8 inkluderte en bedre API for dato og tid for å løse manglene i de eldre bibliotekene.

Derfor ser vi på hvordan du øker datoen med en dag ved hjelp av Java 8, Joda-Time API, Java's Kalender klasse og Apache Commons bibliotek.

2. Maven-avhengigheter

Følgende avhengigheter bør inkluderes i pom.xml fil:

  joda-time joda-time 2.10 org.apache.commons commons-lang3 3.5 

Du finner den nyeste versjonen av Joda-Time på Maven Central, og også den siste versjonen av Apache Commons Lang.

3. Bruke java.time

De java.time.LocalDate klasse er en uforanderlig dato-tid representasjon, ofte sett på som år-måned-dag.

LocalDate har mange metoder for datomanipulering, la oss se hvordan vi kan bruke den til å utføre den samme oppgaven:

offentlig statisk String addOneDay (String date) {return LocalDate .parse (date) .plusDays (1) .toString (); }

I dette eksemplet bruker vi java.time.LocalDate klasse og dens plusDays () metode for å øke datoen med en dag.

La oss nå kontrollere at denne metoden fungerer som forventet:

@Test offentlig ugyldig givenDate_whenUsingJava8_thenAddOneDay () kaster Unntak {String incrementedDate = addOneDay ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }

4. Bruke java.util.Kalender

En annen tilnærming er å bruke java.util.Kalender og dets legge til() metode for å øke datoen.

Vi bruker den sammen med java.text.SimpleDateFormat for datoformatering:

offentlig statisk streng addOneDayCalendar (strengdato) kaster ParseException {SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"); Kalender c = Calendar.getInstance (); c.setTime (sdf.parse (dato)); c.add (Calendar.DATE, 1); returner sdf.format (c.getTime ()); }

java.text.SimpleDateFormat er der for å sikre at forventet datoformat blir brukt. Datoen økes via legge til() metode.

Nok en gang, la oss sørge for at denne tilnærmingen fungerer som forutsatt:

@Test offentlig ugyldig givenDate_whenUsingCalendar_thenAddOneDay () kaster unntak {String incrementedDate = addOneDayCalendar ("03/07/2018"); assertEquals ("04.07.2018", incrementedDate); }

5. Bruke Joda-Time

De org.joda.time.DateTime klassen har mange metoder som hjelper til med å håndtere dato og tid ordentlig.

La oss se hvordan vi kan bruke den til å øke datoen en dag:

offentlig statisk streng addOneDayJodaTime (strengdato) {DateTime dateTime = new DateTime (date); return dateTime .plusDays (1) .toString ("åååå-MM-dd"); }

Her bruker vi org.joda.time.DateTime klasse og dens plusDays () metode for å øke datoen med en dag.

Vi kan bekrefte at koden ovenfor fungerer med følgende enhetstest:

@Test offentlig ugyldig givenDate_whenUsingJodaTime_thenAddOneDay () kaster unntak {String incrementedDate = addOneDayJodaTime ("03/07/2018"); assertEquals ("04.07.2018", incrementedDate); }

6. Bruke Apache Commons

Et annet bibliotek som ofte brukes til datomanipulering (blant annet) er Apache Commons. Det er en rekke verktøy som bruker bruken av java.util.Kalender og java.util.Date gjenstander.

For vår oppgave kan vi bruke org.apache.commons.lang3.time.DateUtils klasse og dens addDays () metode (merk deg at SimpleDateFormat brukes igjen til datoformatering):

offentlig statisk streng addOneDayApacheCommons (strengdato) kaster ParseException {SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"); Date incrementedDate = DateUtils .addDays (sdf.parse (date), 1); returner sdf.format (incrementedDate); }

Som vanlig vil vi verifisere resultatene med en enhetstest:

@Test offentlig ugyldig givenDate_whenUsingApacheCommons_thenAddOneDay () kaster unntak {String incrementedDate = addOneDayApacheCommons ("2018-07-03"); assertEquals ("04.07.2018", incrementedDate); }

7. Konklusjon

I denne raske artikkelen så vi på ulike tilnærminger for å håndtere en enkel oppgave å øke datoen med en dag. Vi har vist hvordan det kan oppnås ved hjelp av Java's kjerne-APIer, samt noen populære tredjepartsbiblioteker.

Kodeprøvene som brukes i denne artikkelen finner du på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found