Incrément Date in Java

Incrément Date en Java

1. Vue d'ensemble

Dans ce didacticiel, nous allons examiner les moyens d'incrémenter la date d'un jour à l'aide de Java. Avant Java 8, les bibliothèques standard de date et d’heure de Java n’étaient pas très conviviales. Par conséquent, Joda-Time est devenu la bibliothèque de date et heure standard de facto pour Java antérieure à Java 8.

Il existe également d'autres classes et bibliothèques qui pourraient être utilisées pour accomplir la tâche, commejava.util.Calendar et Apache Commons.

Java 8 incluait une meilleure API de date et heure pour remédier aux lacunes de ses anciennes bibliothèques.

Par conséquent, nous examinonshow to increment date by one day using Java 8, Joda-Time API, Java’s Calendar class and Apache Commons library.

2. Dépendances Maven

Les dépendances suivantes doivent être incluses dans le fichierpom.xml:


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

Vous pouvez trouver la dernière version du Joda-Time surMaven Central, ainsi que la dernière version deApache Commons Lang.

3. Utilisation dejava.time

La classejava.time.LocalDate est une représentation date-heure immuable, souvent considérée comme année-mois-jour.

LocalDate possède de nombreuses méthodes de manipulation de date, voyons comment nous pouvons l'utiliser pour accomplir la même tâche:

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

Dans cet exemple, nous utilisonsjava.time.LocalDate class et sa méthodeplusDays() pour incrémenter la date d'un jour.

Maintenant, vérifions que cette méthode fonctionne comme prévu:

@Test
public void givenDate_whenUsingJava8_thenAddOneDay()
  throws Exception {

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

4. Utilisation dejava.util.Calendar

Une autre approche consiste à utiliserjava.util.Calendar and sa méthodeadd() pour incrémenter la date.

Nous l'utiliserons avecjava.text.SimpleDateFormat  à des fins de mise en forme de la date:

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  est là pour s'assurer que le format de date attendu est utilisé. La date est augmentée via la méthodeadd() .

Une fois encore, assurons-nous que cette approche fonctionne comme prévu:

@Test
public void givenDate_whenUsingCalendar_thenAddOneDay()
  throws Exception {

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

5. Utiliser Joda-Time

La classeorg.joda.time.DateTime class a de nombreuses méthodes qui aident à gérer correctement la date et l'heure.

Voyons comment nous pouvons l'utiliser pour incrémenter la date d'un jour:

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

Ici, nous utilisonsorg.joda.time.DateTime class et sa méthodeplusDays() pour incrémenter la date d'un jour.

Nous pouvons vérifier que le code ci-dessus fonctionne avec le test unitaire suivant:

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

6. Using Apache Commons

Apache Commons est une autre bibliothèque couramment utilisée pour la manipulation de date (entre autres). Il s’agit d’une suite d’utilitaires entourant l’utilisation des objetsjava.util.Calendar etjava.util.Date.

Pour notre tâche, nous pouvons utiliser la classeorg.apache.commons.lang3.time.DateUtils et sa méthodeaddDays() (notez queSimpleDateFormat est à nouveau utilisé pour le formatage de la date):

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);
}

Comme d'habitude, nous vérifierons les résultats avec un test unitaire:

@Test
public void givenDate_whenUsingApacheCommons_thenAddOneDay()
  throws Exception {

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

7. Conclusion

Dans cet article rapide, nous avons examiné diverses approches pour traiter une tâche simple consistant à incrémenter la date d'un jour. Nous avons montré comment cela peut être réalisé à l'aide des API principales de Java ainsi que de certaines bibliothèques tierces populaires.

Les exemples de code utilisés dans cet article peuvent être trouvésover on GitHub.