Inkrementierungsdatum in Java

Inkrementierungsdatum in Java

1. Überblick

In diesem Tutorial werden Möglichkeiten untersucht, wie Sie mit Java das Datum um einen Tag erhöhen können. Vor Java 8 waren die standardmäßigen Java-Datums- und Zeitbibliotheken nicht sehr benutzerfreundlich. Daher wurde Joda-Time vor Java 8 de facto zur Standardbibliothek für Datum und Uhrzeit für Java.

Es gibt auch andere Klassen und Bibliotheken, die zur Ausführung der Aufgabe verwendet werden könnten, wiejava.util.Calendar und Apache Commons.

Java 8 enthielt eine bessere Datums- und Uhrzeit-API, um die Mängel seiner älteren Bibliotheken zu beheben.

Daher betrachten wirhow to increment date by one day using Java 8, Joda-Time API, Java’s Calendar class and Apache Commons library.

2. Maven-Abhängigkeiten

Die folgenden Abhängigkeiten sollten in der Dateipom.xmlenthalten sein:


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

Sie finden die neueste Version der Joda-Time aufMaven Central sowie die neueste Version vonApache Commons Lang.

3. Verwenden vonjava.time

Diejava.time.LocalDate -Skala ist eine unveränderliche Datums- / Uhrzeitdarstellung, die häufig als Jahr-Monat-Tag angesehen wird.

LocalDate enthält viele Methoden zur Datumsmanipulation. Lassen Sie uns sehen, wie wir damit dieselbe Aufgabe ausführen können:

public static String addOneDay(String date) {
    return LocalDate
      .parse(date)
      .plusDays(1)
      .toString();
}

In diesem Beispiel verwenden wir diejava.time.LocalDate -Skala und ihreplusDays() -Smethod, um das Datum um einen Tag zu erhöhen.

Lassen Sie uns nun überprüfen, ob diese Methode wie erwartet funktioniert:

@Test
public void givenDate_whenUsingJava8_thenAddOneDay()
  throws Exception {

    String incrementedDate = addOneDay("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

4. Verwenden vonjava.util.Calendar

Ein anderer Ansatz ist die Verwendung vonjava.util.Calendar und deradd()-Methode, um das Datum zu erhöhen.

Wir verwenden es zusammen mitjava.text.SimpleDateFormat für Datumsformatierungszwecke:

public static String addOneDayCalendar(String date)
  throws ParseException {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.setTime(sdf.parse(date));
    c.add(Calendar.DATE, 1);
    return sdf.format(c.getTime());
}

java.text.SimpleDateFormat ist vorhanden, um sicherzustellen, dass das erwartete Datumsformat verwendet wird. Das Datum wird über die Methodeadd() erhöht.

Stellen wir noch einmal sicher, dass dieser Ansatz wie beabsichtigt funktioniert:

@Test
public void givenDate_whenUsingCalendar_thenAddOneDay()
  throws Exception {

    String incrementedDate = addOneDayCalendar("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

5. Joda-Time verwenden

Dieorg.joda.time.DateTime -Skala verfügt über viele Methoden, mit denen Datum und Uhrzeit richtig behandelt werden können.

Mal sehen, wie wir damit das Datum um einen Tag erhöhen können:

public static String addOneDayJodaTime(String date) {
    DateTime dateTime = new DateTime(date);
    return dateTime
      .plusDays(1)
      .toString("yyyy-MM-dd");
}

Hier verwenden wir dieorg.joda.time.DateTime -Skala und ihreplusDays() -Smethod, um das Datum um einen Tag zu erhöhen.

Wir können überprüfen, ob der obige Code mit dem folgenden Komponententest funktioniert:

@Test
public void givenDate_whenUsingJodaTime_thenAddOneDay() throws Exception {
    String incrementedDate = addOneDayJodaTime("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

6. Using Apache Commons

Eine andere Bibliothek, die (unter anderem) häufig zur Datumsmanipulation verwendet wird, ist Apache Commons. Es handelt sich um eine Reihe von Dienstprogrammen, die die Verwendung der Objektejava.util.Calendar undjava.util.Date betreffen.

Für unsere Aufgabe können wir dieorg.apache.commons.lang3.time.DateUtils -Skala und ihreaddDays() -Smethod verwenden (beachten Sie, dassSimpleDateFormat erneut für die Datumsformatierung verwendet wird):

public static String addOneDayApacheCommons(String date)
  throws ParseException {

    SimpleDateFormat sdf
      = new SimpleDateFormat("yyyy-MM-dd");
    Date incrementedDate = DateUtils
      .addDays(sdf.parse(date), 1);
    return sdf.format(incrementedDate);
}

Wie üblich überprüfen wir die Ergebnisse mit einem Komponententest:

@Test
public void givenDate_whenUsingApacheCommons_thenAddOneDay()
  throws Exception {

    String incrementedDate = addOneDayApacheCommons(
      "2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

7. Fazit

In diesem kurzen Artikel haben wir uns mit verschiedenen Ansätzen befasst, um eine einfache Aufgabe zu lösen, bei der das Datum um einen Tag erhöht wird. Wir haben gezeigt, wie dies mit den Java-Kern-APIs sowie einigen beliebten Bibliotheken von Drittanbietern erreicht werden kann.

Die in diesem Artikel verwendeten Codebeispiele sindover on GitHub.