Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 32 di 134
  • livello avanzato
Indice lezioni

Gestione date in Java

Java 8 dispone di nuove API per la gestione delle date . In questo capitolo analizzeremo alcune di queste classi per evidenziare la nuova metodologia di costruzione di date ed orari.
Java 8 dispone di nuove API per la gestione delle date . In questo capitolo analizzeremo alcune di queste classi per evidenziare la nuova metodologia di costruzione di date ed orari.
Link copiato negli appunti

Le API Java 8 per la gestione delle date risiedono nel package java.time e nei suoi sotto-package. Iniziamo con la classe java.time.LocalDate che consente di gestire una data priva di orario.

Come mostra il seguente codice, possiamo ottenere un oggetto LocalDate, che rappresenta
una specifica data, invocando il metodo statico of() della classe specificando come input anno, mese e giorno. A differenza di quanto
visto con la classe Calendar, i mesi sono adesso indicizzati a partire dal valore 1, fattore che rende decisamente naturale la costruzione di una data:

LocalDate localDate = LocalDate.of(2016, 1, 1);

Per formattare una data, la classe LocalDate format() java.time.format.DateTimeFormatter DateTimeFormatter DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(Locale.ITALY);
System.out.println(localDate.format(formatter));

Il codice stamperà in console la stringa:

01/01/2016

Possiamo eseguire le stesse formattazioni SHORT, MEDIUM, LONG e FULL viste con la classe java.text.DateFormat FormatStyle

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(Locale.ITALY);
  System.out.println(localDate.format(formatter));

Espandiamo l'esempio aggiungendo alla date anche ore, minuti e secondi. Nelle nuove
API l'orario è adesso rappresentato separatamente da una specifica classe:
java.time.LocalTime of()
nel seguente esempio (dove abbiamo specificato l'orario ore=12, minuti=30, secondi=0):

LocalTime localTime = LocalTime.of(12,30,0);

Possiamo utilizzare in modo congiunto gli oggetti LocalDate
e LocalTime java.time.LocalDateTime

LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);

LocalDateTime LocalDateTime
di formattazione che faccia uso di internazionalizzazione (Locale.ITALY TimeZone Europe/Rome

ZoneId europe = ZoneId.of("Europe/Rome");
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm:ss").withZone(europe).withLocale(Locale.ITALY);
  System.out.println(localDateTime.format(formatter));

La classe java.time.ZoneId

01/01/2016 12:30:00

Possiamo quindi notare come non sia necessario ricorrere ad un'ulteriore classe come SimpleDateFormat

localDateTime.getDayOfMonth();
  localDateTime.getMonth();
  localDateTime.getYear();
  localDateTime.getHour();
  localDateTime.getMinute();
  localDateTime.getSecond();

Quindi, se volessimo aggiungere 5 minuti alla data di esempio:

localDateTime = localDateTime.plusMinutes(5);

Oltre alle date e agli orari il package java.time Istant
suo oggetto rappresenta il numero di secondi dalla mezzanotte del 1 Gennaio 1970 UTC fornendo
una precisione dell'ordine dei nanosecondi e può essere utilizzata in sostituzione di System.currentTimeMillis()
Volendo calcolare il tempo richiesto per processare un blocco di istruzioni scriveremmo qualcosa del tipo:

Instant start = Instant.now();
Instant end = Instant.now();
int timeElapsed = end.getNano()-start.getNano();

Ti consigliamo anche