Sottrai le date in Java
-
Usa
java.util.Date
per sottrarre due date in Java -
Usa
java.time.Duration
ejava.time.Period
per sottrarre due date in Java -
Usa
java.time.temporal.ChronoUnit
per sottrarre due date in Java -
Usa
java.time.temporal.Temporal
until()
per sottrarre due date in Java
Questo articolo spiega come possiamo sottrarre due date o ottenere la differenza tra due date in Java.
Usa java.util.Date
per sottrarre due date in Java
La classe java.text.SimpleDateFormat
viene utilizzata per formattare e analizzare le date in base al modello specificato. Calcoliamo il valore assoluto della differenza di tempo tra le due date in millisecondi.
Il metodo convert()
della classe TimeUnit
accetta due parametri, che sono la durata del tempo e l’unità della durata del tempo. Creiamo un oggetto TimeUnit
time
e convertiamo i millisecondi in giorni utilizzando il metodo 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);
}
}
Produzione:
The difference in days is : 5
Usa java.time.Duration
e java.time.Period
per sottrarre due date in Java
La classe Duration
misura una quantità di tempo in secondi e nanosecondi, mentre la classe Period
misura il tempo in anni, mesi e giorni. Il metodo atStartofDay()
aggiunge l’ora di mezzanotte alla data locale.
Otteniamo l’oggetto Period
come differenza tra due date, mentre otteniamo la differenza tra due istanti come oggetto Duration
utilizzando il metodo between()
. La durata
è preferibile per periodi di tempo più brevi.
La durata diff
viene convertita in giorni utilizzando toDays()
. Allo stesso modo, possiamo ottenere le unità di data di Period
usando getYears()
, getMonths
e 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");
}
}
Produzione:
Diffrence between dates is : 24days
Diffrence is : 1 year, 8 months, 17 days
Usa java.time.temporal.ChronoUnit
per sottrarre due date in Java
In Java 8, la Time API
rappresenta un’unità di data-ora utilizzando l’interfaccia TemporalUnit
. Ogni unità fornisce un’implementazione del metodo denominato between()
. Questo metodo calcola la quantità di tempo tra due oggetti temporali.
ChronoUnit
è il set standard di unità di data e ora che fornisce un accesso basato su unità per manipolare una data, ora o data-ora.
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);
}
}
Produzione:
difference is : 24
Usa java.time.temporal.Temporal
until()
per sottrarre due date in Java
Il metodo until()
calcola la quantità di tempo fino a un altro temporale in termini di unità specificata. Il risultato sarà negativo se la fine è prima dell’inizio.
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");
}
}
Produzione:
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