"Mi sono ricordato che volevo parlarti un po' di come lavorare con le date."

"Mi hai già detto che Java ha la classe Date e posso usare quella classe per lavorare con le date."

"Hmm. Beh, la classe Date è obsoleta da un po'."

"Ora si consiglia invece di utilizzare la classe Calendar, che ha un metodo getTime() che restituisce la data corrente."

"Questo è un oggetto Calendario che di solito viene creato:"

Crea un oggetto Calendario
Calendar cal = Calendar.getInstance();

"Quando chiami questo metodo, viene creato il calendario corretto in base alle impostazioni del tuo computer."

"Il calendario 'corretto'? Significa che ce ne sono diversi?"

"Sì. Beh, sarebbe più corretto dire 'rilevante'. Il fatto è che la Terra non ha uno, ma molti calendari. Quasi ognuno di essi è associato a qualche religione o paese."

"L'anno può essere diverso a seconda del paese in cui ti trovi."

"Ecco alcuni esempi dei calendari più comuni."

Classe di calendario Nome del calendario
Calendario gregoriano Calendario gregoriano cristiano
Calendario buddista Calendario buddista
Calendario imperiale giapponese Calendario imperiale giapponese

"C'è anche il calendario cinese, il calendario islamico e molti altri".

"Vedo."

"Per ottenere la data corrente, devi scrivere un codice come questo:"

Ottenere l'ora corrente
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

"La classe Calendar ha molti metodi che ti consentono di ottenere rapidamente qualsiasi informazione su una data e un'ora."

Codice Commenti
Calendar calendar = Calendar.getInstance();

int era = calendar.get(Calendar.ERA);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
era 
anno 
mese 
giorno del mese

giorno della settimana (lun, mar, mer, …)
ora 
minuto 
secondo

"A volte hai davvero solo bisogno di ottenere una parte delle informazioni disponibili. Ad esempio, l'anno corrente o il giorno della settimana."

"Ma a volte devi semplicemente visualizzare la data nel formato giusto."

"Ad esempio, nel file di registro o da qualche altra parte."

"Oppure crea un formato che l'utente può personalizzare. Cosa fai allora?"

"Ci sono classi speciali anche per questo. La classe SimpleDateFormat è perfettamente adatta per l'attività che hai descritto:"

Come visualizzare una data nel formato desiderato
Calendar calendar = Calendar.getInstance();

DateFormat formatter = new SimpleDateFormat("MM-DD-YY");

String message = formatter.format(calendar.getTime());

"Ah. Mi ricordo. Mi hai già spiegato qualcosa su SimpleDateFormat , ma onestamente non ricordo molto."

"È tutto molto semplice. Crei un oggetto SimpleDateFormat e gli passi il modello di data che desideri ottenere. Quindi chiami il metodo format e ti dà la data passata nella forma desiderata."

"Sembra interessante. Vorrei maggiori dettagli."

"Ecco qua. I dettagli. Ecco alcune delle lettere che possono essere utilizzate nello schema della data:"

Lettera Descrizione
G Sostituito dall'era (AD o BC)
si Sostituito dall'anno
M Sostituito dal mese
w Numero di settimane dell'anno
W Numero della settimana nel mese
D Numero di giorni dell'anno
D Giorno del mese
F Giorno della settimana nel mese
E Giorno della settimana
UN AM/PM (prima o dopo mezzogiorno)
H Ora nel formato 24 ore (0-23)
K Ora nel formato 24 ore (1-24)
K Ora nel formato 12 ore (0-11)
H Ora nel formato 12 ore (1-12)
M Minuti
S Secondi
S Millisecondi
z.z Fuso orario, formattato in questo modo: Pacific Standard Time, PST
z Fuso orario, formattato in questo modo: -0800/td>

"Fantastico! È praticamente tutto ciò di cui hai bisogno."

"Ci sono ancora alcune sfumature legate alla ripetizione di queste lettere".

"Se scrivi YY, otterrai le ultime due cifre dell'anno. Se scrivi YYYY, otterrai tutte e quattro le cifre dell'anno."

"C'è anche una certa complessità con i mesi. MM è il numero del mese. MMM è un'abbreviazione di tre lettere del mese, cioè Jan, Feb, Mar, Apr, May, ecc. MMMM sta per il nome completo del mese ."

"Puoi anche visualizzare l'intero giorno della settimana (usando EEEE) o solo le prime due lettere (usando EE)."

"Grazie, Rishi. Questa classe SimpleDateFormat è davvero utile. Adesso lo so."

"Divertiti a usarlo! E buona fortuna!"