LocalDate in Java: come rappresentare, formattare e manipolare date

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.

Link utili

Lezioni sul linguaggio Java

La mia repository GitHub sulle lezioni Java

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »