Daten subtrahieren in Java

Rupam Yadav 12 Oktober 2023
  1. Verwenden Sie java.util.Date, um zwei Datumsangaben in Java zu subtrahieren
  2. Verwendung von java.time.Duration und java.time.Period zur Subtraktion zweier Daten in Java
  3. Verwenden von java.time.temporal.ChronoUnit zum Subtrahieren zweier Daten in Java
  4. Verwenden von java.time.temporal.Temporal until() zum Subtrahieren zweier Daten in Java
Daten subtrahieren in Java

Dieser Artikel erklärt, wie wir in Java zwei Datumsangaben subtrahieren oder die Differenz zwischen zwei Datumsangaben ermitteln können.

Verwenden Sie java.util.Date, um zwei Datumsangaben in Java zu subtrahieren

Die Klasse java.text.SimpleDateFormat wird verwendet, um Datumsangaben nach dem angegebenen Muster zu formatieren und zu analysieren. Wir berechnen den absoluten Wert der Zeitdifferenz zwischen den beiden Datumsangaben in Millisekunden.

Die Methode convert() der Klasse TimeUnit nimmt zwei Parameter entgegen, nämlich Zeitdauer und Einheit der Zeitdauer. Wir erzeugen ein TimeUnit-Objekt time und konvertieren die Millisekunden mit der Methode convert() in Tage.

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

Ausgabe

The difference in days is : 5

Verwendung von java.time.Duration und java.time.Period zur Subtraktion zweier Daten in Java

Die Klasse Duration misst eine Zeitspanne in Sekunden und Nanosekunden, während die Klasse Period die Zeit in Jahren, Monaten und Tagen misst. Die Methode atStartofDay() hängt die Mitternachtszeit an das lokale Datum an.

Das Objekt Period erhalten wir als Differenz zwischen zwei Datumsangaben, während wir die Differenz zwischen zwei Zeitpunkten als Objekt Duration mit der Methode between() erhalten. Für kürzere Zeitspannen wird Duration bevorzugt.

Die Dauer diff wird mit toDays() in Tage umgerechnet. Auf ähnliche Weise können wir die Datumseinheiten von Period mit getYears(), getMonths und getDays() ermitteln.

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

Ausgabe

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

Verwenden von java.time.temporal.ChronoUnit zum Subtrahieren zweier Daten in Java

In Java 8 stellt die Time API eine Datums-Zeit-Einheit über die Schnittstelle TemporalUnit dar. Jede Einheit bietet eine Implementierung der Methode namens between(). Diese Methode berechnet die Zeitspanne zwischen zwei zeitlichen Objekten.

ChronoUnit ist der Standardsatz von Datums-Zeit-Einheiten, der einen einheitenbasierten Zugriff zur Manipulation eines Datums, einer Zeit oder einer Datums-Zeit bietet.

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

Ausgabe

difference is : 24

Verwenden von java.time.temporal.Temporal until() zum Subtrahieren zweier Daten in Java

Die Methode until() berechnet die Zeitspanne bis zu einem anderen Temporal in Bezug auf die angegebene Einheit. Das Ergebnis ist negativ, wenn das Ende vor dem Anfang liegt.

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

Ausgabe

difference is : 9 days
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

Verwandter Artikel - Java DateTime