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.
JavaScript Expression
Type any expression that returns a Date or number.
L'oggetto Date di JavaScript
L'oggetto Date integrato in JavaScript memorizza il tempo internamente come numero di millisecondi dall'epoca Unix (1° gennaio 1970 00:00:00 UTC). Ogni istanza Date è in definitiva solo questo singolo intero. I vari metodi — toISOString(), toString(), toLocaleString() — sono modi diversi di mostrare lo stesso valore sottostante.
Insidie comuni nel lavorare con le date in JavaScript
Diversi comportamenti di Date in JavaScript mettono in difficoltà anche gli sviluppatori esperti:
- I mesi partono da zero: gennaio è 0, dicembre è 11 — aggiungi sempre 1 quando li mostri
- new Date('2024-01-01') viene interpretato come mezzanotte UTC; new Date('2024/01/01') come mezzanotte locale
- new Date(2024, 0, 1) costruisce il 1° gennaio 2024 in ora locale (il mese parte da zero)
- Date.now() restituisce millisecondi; Math.floor(Date.now() / 1000) dà i secondi Unix
- Evita di aggiungere giorni sommando 86400000ms — a causa del DST potrebbe cadere all'ora sbagliata
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 si gestiscono 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 così puoi individuare velocemente 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 appare diversa, il timestamp è giusto ed è cambiato solo il fuso di visualizzazione.
- getTime è sempre in millisecondi dall'epoca Unix
- I secondi Unix sono getTime diviso 1000 e arrotondato per difetto
- toISOString mostra sempre UTC con una Z finale
- toString e toLocaleString mostrano il fuso locale del browser a meno che le opzioni non lo sovrascrivano