La classe LocalDate è una delle classi Date/Time API di Java 8. Essa rappresenta una data, ovvero un giorno, un mese e un anno, senza alcun orario o informazione sul fuso orario.
Creazione di una data
Per creare una data con la classe LocalDate, è possibile utilizzare il costruttore LocalDate()
, passando come parametri il giorno, il mese e l’anno:
LocalDate data = LocalDate.of(2023, 9, 22);
In alternativa, è possibile utilizzare il metodo statico now()
per ottenere la data corrente:
LocalDate data = LocalDate.now();
Accesso ai dati della data
La classe LocalDate fornisce diversi metodi per accedere ai dati della data, come il giorno, il mese e l’anno:
int giorno = data.getDayOfMonth();
int mese = data.getMonthValue();
int anno = data.getYear();
Operazioni su date
La classe LocalDate fornisce diversi metodi per effettuare operazioni su date, come il confronto, l’aggiunta e la sottrazione:
// Confronto di date
boolean uguali = data1.equals(data2);
boolean precedente = data1.isBefore(data2);
boolean successivo = data1.isAfter(data2);
// Aggiunta di giorni
LocalDate data1 = data.plusDays(1);
// Sottrazione di giorni
LocalDate data1 = data.minusDays(1);
Formattazione di date con LocalDate
La classe LocalDate può essere formattata utilizzando un oggetto DateTimeFormatter
. Ad esempio, il seguente codice formatta una data nel formato giorno/mese/anno:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String dataFormattata = data.format(formatter);
Esempio utilizzo classe LocalDate in Java
Il seguente esempio mostra come utilizzare la classe LocalDate per rappresentare una data e per effettuare operazioni su di essa:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class EsempioLocalDate {
public static void main(String[] args) {
// Creazione di una data
LocalDate data = LocalDate.of(2023, 9, 22);
// Accesso ai dati della data
int giorno = data.getDayOfMonth();
int mese = data.getMonthValue();
int anno = data.getYear();
System.out.println("Data: " + giorno + "/" + mese + "/" + anno);
// Confronto di date
LocalDate data2 = LocalDate.of(2023, 9, 21);
if (data.equals(data2)) {
System.out.println("Le date sono uguali");
} else if (data.isBefore(data2)) {
System.out.println("La prima data è precedente alla seconda");
} else {
System.out.println("La prima data è successiva alla seconda");
}
// Aggiunta di giorni
LocalDate data3 = data.plusDays(1);
System.out.println("Data dopo un giorno: " + data3);
// Sottrazione di giorni
LocalDate data4 = data.minusDays(1);
System.out.println("Data prima di un giorno: " + data4);
// Formattazione di una data
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String dataFormattata = data.format(formatter);
System.out.println("Data formattata: " + dataFormattata);
}
}
Differenza tra due date LocalDate in Java
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
// Creazione di due date
LocalDate data1 = LocalDate.of(2023, 10, 27);
LocalDate data2 = LocalDate.of(2023, 12, 31);
// Calcolo della differenza tra le due date
Period periodo = Period.between(data1, data2);
// Stampa della differenza
System.out.println("La differenza tra le due date è: ");
System.out.println("Anni: " + periodo.getYears());
System.out.println("Mesi: " + periodo.getMonths());
System.out.println("Giorni: " + periodo.getDays());
}
}
In questo esempio, Period.between(data1, data2)
calcola la differenza tra data1
e data2
. Il risultato viene poi stampato sulla console. Ricorda che Period
considera solo i giorni pieni tra le due date. Se vuoi considerare anche le ore, i minuti e i secondi, dovresti usare LocalDateTime
al posto di LocalDate
.
Conclusione
La classe LocalDate è un’utile classe per la gestione delle date in Java. Essa fornisce un’ampia gamma di metodi e funzioni per rappresentare, formattare e manipolare date.