Soustraire des dates en Java

Rupam Yadav 12 octobre 2023
  1. Utilisez java.util.Date pour soustraire deux dates en Java
  2. Utilisez java.time.Duration et java.time.Period pour soustraire deux dates en Java
  3. Utilisez java.time.temporal.ChronoUnit pour soustraire deux dates en Java
  4. Utilisez java.time.temporal.Temporal until() pour soustraire deux dates en Java
Soustraire des dates en Java

Cet article explique comment on peut soustraire deux dates ou obtenir la différence entre deux dates en Java.

Utilisez java.util.Date pour soustraire deux dates en Java

La classe java.text.SimpleDateFormat est utilisée pour formater et analyser les dates selon le modèle spécifié. Nous calculons la valeur absolue de la différence de temps entre les deux dates en millisecondes.

La méthode convert() de la classe TimeUnit accepte deux paramètres, qui sont la durée du temps et l’unité de la durée du temps. Nous créons un objet TimeUnit et convertissons les millisecondes en jours en utilisant la méthode convert().

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String[] args) throws Exception {
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
    Date firstDate = sdf.parse("04/22/2020");
    Date secondDate = sdf.parse("04/27/2020");

    long diff = secondDate.getTime() - firstDate.getTime();

    TimeUnit time = TimeUnit.DAYS;
    long diffrence = time.convert(diff, TimeUnit.MILLISECONDS);
    System.out.println("The difference in days is : " + diffrence);
  }
}

Production :

The difference in days is : 5

Utilisez java.time.Duration et java.time.Period pour soustraire deux dates en Java

La classe Duration mesure une quantité de temps en secondes et nanosecondes, tandis que la classe Period mesure le temps en années, mois et jours. La méthode atStartofDay() ajoute l’heure de minuit à la date locale.

Nous obtenons l’objet Period comme différence entre deux dates, tandis que nous obtenons la différence entre deux instants comme objet Duration en utilisant la méthode between(). La méthode Duration est préférée pour les périodes plus courtes.

La durée diff est convertie en jours en utilisant toDays(). De même, nous pouvons obtenir les unités de date de Period en utilisant getYears(), getMonths et getDays().

import java.time.Duration;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;

public class Main {
  public static void main(String[] args) throws Exception {
    LocalDate d1 = LocalDate.parse("2020-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
    LocalDate d2 = LocalDate.parse("2020-05-30", DateTimeFormatter.ISO_LOCAL_DATE);

    LocalDate d3 = LocalDate.parse("2018-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
    LocalDate d4 = LocalDate.parse("2020-01-23", DateTimeFormatter.ISO_LOCAL_DATE);

    Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());
    Period period = Period.between(d3, d4);

    long diffDays = diff.toDays();
    int years = Math.abs(period.getYears());
    int months = Math.abs(period.getMonths());
    int days = Math.abs(period.getDays());
    System.out.println("Diffrence between dates is : " + diffDays + "days");
    System.out.println(
        "Diffrence is : " + years + " year, " + months + " months, " + days + " days");
  }
}

Production :

Diffrence between dates is : 24days
Diffrence is : 1 year, 8 months, 17 days

Utilisez java.time.temporal.ChronoUnit pour soustraire deux dates en Java

En Java 8, l’API Time représente une unité de date-heure utilisant l’interface TemporalUnit. Chaque unité fournit une implémentation de la méthode nommée between(). Cette méthode calcule le temps entre deux objets temporels.

ChronoUnit est l’ensemble standard d’unités de date-heure qui fournit un accès basé sur les unités pour manipuler une date, une heure ou une date-heure.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Main {
  public static void main(String[] args) throws Exception {
    LocalDate dBefore = LocalDate.parse("2018-05-06", DateTimeFormatter.ISO_LOCAL_DATE);
    LocalDate dAfter = LocalDate.parse("2018-05-30", DateTimeFormatter.ISO_LOCAL_DATE);

    long diff = ChronoUnit.DAYS.between(dBefore, dAfter);
    System.out.println("difference is : " + diff);
  }
}

Production :

difference is : 24

Utilisez java.time.temporal.Temporal until() pour soustraire deux dates en Java

La méthode until() calcule le temps jusqu’à un autre temporel en fonction de l’unité spécifiée. Le résultat sera négatif si la fin est avant le début.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;

public class Main {
  public static void main(String[] args) throws Exception {
    LocalDate dBefore = LocalDate.parse("2018-05-21", DateTimeFormatter.ISO_LOCAL_DATE);
    LocalDate dAfter = LocalDate.parse("2018-05-30", DateTimeFormatter.ISO_LOCAL_DATE);

    long diff = dBefore.until(dAfter, ChronoUnit.DAYS);
    System.out.println("difference is : " + diff + " days");
  }
}

Production :

difference is : 9 days
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java DateTime