tl; dr
LocalDate.now() // Determine today’s date.
.plusMonths(3) // Add three months.
java.time
L'approccio moderno utilizza le classi java.time.
La classe LocalDate
rappresenta un valore di sola data senza ora del giorno e senza fuso orario.
Un fuso orario è fondamentale per determinare una data. Per un dato momento, la data varia in tutto il mondo per zona. Ad esempio, pochi minuti dopo la mezzanotte in Paris France è un nuovo giorno mentre è ancora "ieri" in Montréal Québec.
Se non viene specificato alcun fuso orario, la JVM applica implicitamente il suo fuso orario predefinito corrente. L'impostazione predefinita può cambiare in qualsiasi momento, quindi i risultati potrebbero variare. Meglio specificare esplicitamente il fuso orario desiderato/previsto come argomento.
Specificare un proper time zone name nel formato continent/region
, come ad esempio America/Montreal
, Africa/Casablanca
o Pacific/Auckland
.Non utilizzare mai l'abbreviazione di 3-4 lettere come EST
o IST
poiché sono non fusi orari reali, non standardizzati e nemmeno univoci (!).
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
Aggiungere tre mesi, lasciando java.time fare i conti.
LocalDate threeMonthsLater = today.plusMonths(3) ;
Chi java.time
Il quadro java.time è costruito in Java 8 e versioni successive. Queste classi soppiantano le fastidiose classi di data legacy come java.util.Date
, Calendar
, & SimpleDateFormat
.
Il progetto Joda-Time, ora in maintenance mode, consiglia la migrazione alle classi java.time.
Per ulteriori informazioni, vedere Oracle Tutorial. E cerca Stack Overflow per molti esempi e spiegazioni. La specifica è JSR 310.
Dove ottenere le classi java.time?
- Java SE 8, Java SE 9, e più tardi
- incorporato.
- Parte dell'API Java standard con un'implementazione in bundle.
- Java 9 aggiunge alcune funzionalità e correzioni minori.
- Java SE 6 e Java SE 7
- Molte delle funzionalità java.time è di back-porting per Java 6 .
- Android
- versioni successive di implementazioni fascio Android delle classi java.time.
- Per Android precedente, il progetto ThreeTenABP si adatta a ThreeTen-Backport (menzionato sopra). Vedi How to use ThreeTenABP….
Il progetto ThreeTen-Extra java.time prolunga con classi aggiuntive. Questo progetto è un terreno di prova per possibili aggiunte future a java.time. È possibile trovare alcune classi utili come Interval
, YearWeek
, YearQuarter
e more.
BTW, Che cos'è un Kurosawa? –
Secondo Wikipedia, è un sake prodotto a Saku, Nagano, in Giappone. –