DanLevy.net

Quiz: 14 domande su JavaScript Date

Impara a stupire alle feste con le curiosità su JS! ✨

Hero image for Quiz: 14 domande su JavaScript Date

Quanto conosci davvero la classe Date?

  • Dimostra le tue skill in JavaScript! 🚀
  • Nessuna registrazione richiesta. ✨
  • Scelta multipla. 🤖 … Quanto potrà mai essere difficile?

Panoramica

La classe Date in JavaScript ha un’API notoriamente ostica. È stata ereditata da Java e posso solo ipotizzare che sia stata ispirata da metodi di misurazione del tempo del neolitico.

La difficoltà nel gestire le Date spinge molti sviluppatori a usare librerie di terze parti senza farsi domande. Sebbene sia spesso una scelta sicura e affidabile, queste librerie sono raramente necessarie per la formattazione delle date o la localizzazione!

Questo quiz è progettato per testare (e approfondire) la tua conoscenza dell’API nativa Date. Usa i pulsanti verdi per suggerimenti e spiegazioni! Spero che alla fine della sfida avrai consolidato la tua comprensione delle Date in JavaScript.

NOTA: Tutti gli esempi assumono come fuso orario locale GMT-7.

👇 14 Domande qui sotto 👇


Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d1 = new Date(2020, 1, 1)
console.log(d1)

L’argomento relativo al mese è basato su zero, con un intervallo 0-11 (utilizzando i calendari occidentali).

‘February’ ha un valore di indice pari a uno. (Pensalo come alla ricerca di un elemento in un array.)

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d2 = new Date(2020, 0, 1)
console.log(d2)

L’argomento relativo al mese (Month) è basato su zero, con un intervallo 0-11 (utilizzando i calendari occidentali).

‘January’ ha un valore di indice pari a zero. (Pensalo come alla ricerca di un elemento in un array.)

Cosa includerà l’output?

const d3 = Date('Thu, 01 Jan 1970 00:00:00 GMT')
console.log(d3)

Chiamare Date() senza new ignora tutti gli argomenti e restituisce una stringa con la data e l’ora correnti. Usa new Date(...) per creare un oggetto Date a partire dagli argomenti forniti.

Assumi un fuso orario locale fisso GMT−7.

Quale sarà l’output incluso?

const date = new Date(2020)
console.log(date.getFullYear())

Un’istanza di Date creata con un singolo argomento intero viene interpretata come un valore Unix Epoch. L’Epoch è il conteggio dei millisecondi a partire dal 1° gennaio 1970.

Un valore di 2020 (millisecondi) si traduce in 2 secondi dopo il 1° gennaio 1970.

Dato che il nostro fuso orario locale ha un offset negativo di -7 ore, finiamo con Wed Dec 31 1969 17:00:02 GMT-0700 (Mountain Standard Time).

Puoi evitare l’offset del fuso orario locale utilizzando .getUTCFullYear().

Assumi un fuso orario locale fisso GMT−7.

Quale valore verrà stampato nella console?

const d1 = new Date('2020-01-01')
const d2 = new Date('2020-01-01T00:00')
console.log(d1.getFullYear(), d2.getFullYear())

La stringa senza il valore temporale T potrebbe sembrare il 1° gennaio 2020 - ma le stringhe di sola data vengono interpretate come UTC e, quando adattate al nostro fuso orario locale (GMT-7), scopriamo di essere ancora nel 2019.

Le stringhe data-ora senza un fuso orario esplicito vengono interpretate nell’ora locale.

Il formato T00:00 fa sì che il secondo valore venga interpretato come la mezzanotte locale.

La prima data viene interpretata come Tue Dec 31 2019 17:00:00 GMT-0700 (Mountain Standard Time). La seconda data viene interpretata come Wed Jan 01 2020 00:00:00 GMT-0700 (Mountain Standard Time).

Seleziona un metodo di formattazione errato:

Il metodo toLocaleFormat() non fa parte dello standard ECMAScript. Per codice portabile usa toLocaleDateString() o toLocaleString().

Dai un’occhiata alla documentazione di toLocaleDateString. Il suo comportamento è documentato sotto Intl.DateTimeFormat.

Cosa includerà l’output?

var date = Date.UTC('2020-01-02T00:00')
console.log(date.toUTCString())

Date.UTC() si aspetta argomenti numerici per anno, mese e così via. Questa stringa non può essere convertita in un anno valido, quindi restituisce prima NaN. Si tratta di un numero, non di un oggetto Date: chiamare .toUTCString() su quel valore genera un TypeError.

Cosa includerà l’output?

const d = Date.UTC(2020, 0, 1)
console.log(d)

Il metodo helper Date.UTC non restituisce un’istanza di data. Restituisce un intero che rappresenta i millisecondi.

Quale sarà l’output incluso?

// Assume local TZ is -07:00
const d = new Date(Date.UTC(2020, 0, 1))
console.log(d.getTimezoneOffset())

Gli oggetti Date memorizzano i millisecondi dall’epoca Unix, non un fuso orario. getTimezoneOffset() usa le regole del fuso locale per quella data e restituisce la differenza rispetto a UTC in minuti. Con l’offset GMT−7 indicato, il risultato è 420. Nelle regioni con ora legale, l’offset può cambiare tra date diverse.

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d = new Date(2020, 0, 1)
d.setDate(1)
console.log(d)

Il metodo .setDate() imposta il giorno del mese, in base al mese corrente dell’istanza fornita.

Se viene fornito un valore al di fuori del numero di giorni disponibili, il valore del mese dell’istanza della data verrà regolato (ad esempio, un setDate(32) a gennaio verrà calcolato come 1° febbraio).

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d = new Date(2020, 0, 1)
d.setMonth(1)
console.log(d)

Il metodo .setMonth() imposta il mese per l’istanza di una data specifica.

L’argomento del mese è basato su zero, con un intervallo da 0 a 11 (utilizzando i calendari occidentali).

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d = new Date(2020, 0, 1)
d.setMonth(12)
console.log(d)

Il metodo .setMonth() imposta il mese per una specifica istanza di data.

L’argomento month è basato su zero, con 12 valori nell’intervallo 0-11 (utilizzando il calendario occidentale).

In questo caso vediamo che l’anno viene aggiornato al 2021, perché setMonth(12) è di un’unità superiore a 11 (Dicembre).

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d = new Date(2020, 0, 1)
d.setMonth(13)
console.log(d)

Il metodo .setMonth() imposta il mese per l’istanza di una data specifica.

L’argomento del mese è basato su zero, con un intervallo da 0 a 11 (utilizzando i calendari occidentali).

Qui vediamo che il mese e l’anno vengono regolati a Febbraio 2021, perché setMonth(13) è superiore di 2 rispetto a 11 (Dicembre).

Quale data del calendario locale rappresenta questo oggetto? Il formato mostrato dalla console può variare.

const d = new Date(2020, 0, 1)
d.setMonth(-1)
console.log(d)

Il metodo .setMonth() imposta il mese per la data istanziata.

L’argomento del mese è basato su zero, con un intervallo 0-11 (usando il calendario occidentale).

Qui vediamo che il mese e l’anno tornano a dicembre 2019, perché setMonth(-1) è inferiore a 0 (Gennaio).