Daten subtrahieren in Java
-
Verwenden Sie
java.util.Date
, um zwei Datumsangaben in Java zu subtrahieren -
Verwendung von
java.time.Duration
undjava.time.Period
zur Subtraktion zweier Daten in Java -
Verwenden von
java.time.temporal.ChronoUnit
zum Subtrahieren zweier Daten in Java -
Verwenden von
java.time.temporal.Temporal
until()
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