Daten subtrahieren in Java
-
Verwenden Sie
java.util.Date, um zwei Datumsangaben in Java zu subtrahieren -
Verwendung von
java.time.Durationundjava.time.Periodzur Subtraktion zweier Daten in Java -
Verwenden von
java.time.temporal.ChronoUnitzum Subtrahieren zweier Daten in Java -
Verwenden von
java.time.temporal.Temporaluntil()zum Subtrahieren zweier Daten 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn