Playground Date di JavaScript
Digita un'espressione Date di JavaScript ed esplora ogni formato di output e proprietà in tempo reale — toISOString, toString, getTime, getFullYear e altro.
L'oggetto Date di JavaScript
L'oggetto Date integrato di JavaScript memorizza il tempo internamente come numero di millisecondi dall'epoch Unix (1° gennaio 1970 00:00:00 UTC). Ogni istanza Date è in definitiva solo questo intero. I vari metodi — toISOString(), toString(), toLocaleString() — sono modi diversi di mostrare lo stesso valore di base.
Errori comuni con le date in JavaScript
Diversi comportamenti di Date traggono in inganno anche gli sviluppatori esperti:
- I mesi partono da zero: gennaio è 0 e dicembre è 11; aggiungi sempre 1 quando li mostri
- new Date('2024-01-01') è interpretato come mezzanotte UTC; new Date('2024/01/01') come mezzanotte locale
- new Date(2024, 0, 1) crea il 1° gennaio 2024 in ora locale (il mese parte da 0)
- Date.now() restituisce millisecondi; Math.floor(Date.now() / 1000) dà secondi Unix
- Evita di aggiungere giorni sommando 86400000 ms: l'ora legale può farlo finire nell'orario sbagliato
Lavorare con i fusi orari in JavaScript
L'oggetto Date di JavaScript non ha una proprietà di fuso orario: è sempre memorizzato in UTC. Le conversioni di fuso avvengono in fase di visualizzazione, con l'API Intl.DateTimeFormat.
- new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Tokyo', dateStyle: 'full', timeStyle: 'long' }).format(date)
- date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })
- new Intl.DateTimeFormat('en-CA', { timeZone: tz }).formatToParts(date) — restituisce le singole parti per una formattazione personalizzata
Come leggere l'output del playground
Il playground mostra diverse viste dello stesso valore Date per individuare in fretta errori di unità e di fuso. Confronta prima getTime con i secondi Unix, poi controlla le stringhe ISO e locale. Se la data ISO è corretta ma la stringa locale sembra diversa, il timestamp è giusto ed è cambiato solo il fuso di visualizzazione.
- getTime è sempre in millisecondi dall'epoch Unix
- I secondi Unix sono getTime diviso 1000 e arrotondato per difetto
- toISOString mostra sempre l'UTC con una Z finale
- toString e toLocaleString mostrano il fuso locale del browser, a meno che le opzioni non lo sovrascrivano