1. Classe DateTimeFormatter
La DateTimeFormatter
classe speciale si fa strada nell'API Date Time. Il suo scopo è rendere il più semplice possibile per i programmatori convertire una data e un'ora nel formato esatto che desiderano. E siamo felici di annunciare che i creatori di Java hanno avuto successo.
Usarlo è molto semplice. Innanzitutto, devi creare una DateTimeFormatter
classe e passare un modello che specifichi come verranno visualizzate la data e l'ora:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Dove dtf
è una DateTimeFormatter
variabile. è un metodo statico della classe. E pattern è una stringa che specifica il modello che verrà utilizzato per visualizzare la data e l'ora.DateTimeFormatter.ofPattern()
DateTimeFormatter
Esempi
Codice | Uscita console |
---|---|
|
|
Nell'esempio sopra, usiamo il ofPattern()
metodo per creare un DateTimeFormatter
oggetto basato sul modello. E nella riga successiva, usiamo il format()
metodo per convertire un LocalDateTime
oggetto in una stringa. Vedi il risultato sullo schermo.
Puoi passare quasi tutti gli oggetti dall'API Date Time al format()
metodo.
Anche lo statico ofPattern()
è molto semplice: prende un modello come argomento e restituisce un DateTimeFormatter
oggetto. La parte più interessante si trova nel modello.
2. Schema di formattazione
La stringa passata come modello viene utilizzata come modello durante la visualizzazione delle informazioni. MM è sostituito dal numero del mese, gg dal giorno del mese e aa dal numero dell'anno. Il caso delle lettere è importante.
La tabella completa per questi modelli temporali è questa:
Lettera | Senso |
---|---|
si | Anno |
M | Mese |
D | Giorno |
H | Ore |
M | Minuti |
S | Secondi |
S | Millesimi di secondo |
N | Nanosecondi. |
Non particolarmente difficile da ricordare.
Ma perché lo schema nell'esempio include le lettere ripetute MM, dd e yy? Bene, qui è dove diventa più interessante.
Idea generale
Il numero di lettere influisce sulla lunghezza del testo. Più lettere ci sono, più lungo sarà il testo.
Se la lettera H viene specificata una volta, 9 ore verranno visualizzate come 9, ma se la lettera H viene specificata due volte di seguito, 9 ore verranno visualizzate come 09.
Se la lettera y viene specificata 2 volte di seguito, l'anno viene scritto utilizzando 2 cifre. Se si verifica 4 volte di seguito, vengono utilizzate 4 cifre.
Se la lettera M viene specificata 2 volte di seguito, viene scritto il numero del mese. Se 3 volte di seguito, viene utilizzato il nome del mese (le sue prime 3 lettere). Se 4 volte di seguito, viene utilizzato il nome completo del mese.
Esempio:
Codice | Uscita console |
---|---|
|
|
3. Tabella completa dei modelli
La tabella completa è abbastanza grande e super interessante:
Modello | Variazioni del modello | Esempio | Descrizione |
---|---|---|---|
si | aa, aaaa | 19; 2019 | Anno |
M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; gennaio; Gennaio; J | Mese |
D | d, gg | 9; 09 | Giorno |
H | H, HH | 2; 02 | Ore |
M | m, mm | 3; 03 | Minuti |
S | s, ss | 5; 05 | Secondi |
S | S, SS, SSS, ... | 1; 12; 123 | Millesimi di secondo |
N | N | 123456789 | Nanosecondi |
G | SOL, GGGG, GGGG | ANNO DOMINI; Anno Domini; UN; | Era |
Q/Q | q, qq, qqq, qqqq | 3; 03; Q3; 3° quarto | Trimestre |
w | w | 13 | Settimana dell'anno |
W | W | 3 | Settimana del mese |
E | EEE, EEEEE, EEEEE | lun; Lunedi; M | Giorno della settimana |
e/c | e, ee, eee, eeee, eeee | 1; 01; lun; Lunedi; M | Giorno della settimana |
UN | UN | PM | Antimeridiane o pomeridiane |
H | H | 12 | Orologio di 12 ore. |
v | VV | Europa/Helsinki | Fuso orario |
z.z | zzzzz | EET; Ora standard dell'Europa orientale | Fuso orario |
O | OOOOO | GMT+2; GMT+02:00 | Fuso orario |
A proposito, questa non è in realtà una versione completa. Puoi trovare la versione più completa qui .
4. Tempo di analisi
La DateTimeFormatter
classe è interessante anche per la sua capacità non solo di convertire una data e un'ora in una stringa secondo uno schema dato, ma anche di eseguire l'operazione inversa!
L'analisi di una stringa è il processo di suddivisione in token significativi.
Ecco come appare:
Codice | Uscita console |
---|---|
|
|
Innanzitutto, creiamo un DateTimeFormatter
oggetto e impostiamo il modello utilizzato per l'analisi.
Quindi chiamiamo il metodo LocalDate.parse()
or LocalTime.parse()
o LocalDateTime.parse()
e passiamo la stringa da analizzare insieme all'oggetto DateTimeFormatter
, che capisce come analizzare il testo passato e quale modello dovrebbe essere usato per farlo.
Un altro esempio: questa volta analizzeremo il tempo.
Codice | Uscita console |
---|---|
|
|
GO TO FULL VERSION