Tracce
/
Java
Java
/
Programma
/
Data e ora
Da

Data e ora in Java

6 esercizi

Informazioni su Data e ora

Il pacchetto java.time, introdotto in Java 8, contiene diverse classi per lavorare con date e orari.

LocalDate

La classe java.time.LocalDate rappresenta una data senza fuso orario nel sistema di calendario ISO-8601, come 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

Le date si possono confrontare con altre date:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

Un'istanza di LocalDate dispone di getter per estrarne le singole componenti:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

Un'istanza di LocalDate dispone di metodi per aggiungervi unità di tempo.

Note

Questi metodi restituiscono una nuova istanza di LocalDate e non aggiornano l'istanza esistente, perché la classe LocalDate è immutabile.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

La classe java.time.LocalDateTime rappresenta una data e un'ora senza fuso orario nel sistema di calendario ISO-8601, come 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

Come la classe LocalDate, un'istanza di LocalDateTime ha gli stessi metodi per confrontarsi con altri LocalDateTime e per aggiungervi unità di tempo.

È anche possibile convertire un'istanza di LocalDate in un LocalDateTime:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

Formattazione di date e orari

Sia LocalDate che LocalDateTime usano la notazione standard ISO-8601 quando convertono da e verso una String.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

Non è possibile fare il parsing di un LocalDate o di un LocalDateTime da una String come questa usando un formato diverso. Per formattare le date con un formato personalizzato, invece, puoi usare java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

Quando crei un formato personalizzato, puoi anche specificare un locale per formattare e fare il parsing in regioni diverse:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Data e ora