Quiz: 14 Fragen zu JavaScript-Dates
Lerne, auf Partys mit JS-Trivia zu beeindrucken! ✨
Wie gut kennen Sie die Date-Klasse?
- Beweisen Sie Ihre JavaScript-Skills! 🚀
- Kein Login oder Registrierung erforderlich. ✨
- Multiple Choice. 🤖 … Wie schwer kann das schon sein, oder?
Überblick
Die Date-Klasse in JavaScript hat eine notorisch schwierige API. Sie wurde von Java übernommen und, so meine Vermutung, von neolithischen Zeitmessungsmethoden inspiriert.
Der Kampf mit Date führt dazu, dass viele Entwickler ungefragt auf Drittanbieter-Bibliotheken zurückgreifen. Das ist zwar oft eine sichere und zuverlässige Wahl, aber für die Formatierung von Daten oder Lokalisierung sind diese Bibliotheken selten wirklich notwendig!
Dieses Quiz soll Ihr Wissen über die native Date-API testen (und vertiefen). Nutzen Sie die grünen Buttons für Hinweise und Erklärungen! Hoffentlich haben Sie am Ende der Challenge Ihr Verständnis von Date in JavaScript gefestigt.
HINWEIS: Gehen Sie bei allen Beispielen von der lokalen Zeitzone GMT-7 aus.
👇 14 Fragen unterhalb 👇
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d1 = new Date(2020, 1, 1)console.log(d1)Das Monats-Argument ist nullbasiert, mit einem Bereich von 0-11 (bei Verwendung westlicher Kalender).
‘Februar’ hat den Indexwert eins. (Stell es dir wie ein Array-Lookup vor.)
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d2 = new Date(2020, 0, 1)console.log(d2)Das Argument für den Monat ist nullbasiert, mit einem Bereich von 0-11 (bei Verwendung des westlichen Kalenders).
‘Januar’ hat den Indexwert Null. (Stell es dir wie einen Array-Lookup vor.)
Was wird die Ausgabe enthalten?
const d3 = Date('Thu, 01 Jan 1970 00:00:00 GMT')console.log(d3)Date(...) ohne new ist ein Funktionsaufruf. Er ignoriert alle Argumente und gibt einen String mit dem aktuellen Datum und der aktuellen Uhrzeit zurück. new Date(...) erzeugt dagegen ein Date-Objekt und verarbeitet seine Argumente. Dieser Unterschied ist leicht zu übersehen.
Nimm für diese Frage einen lokalen Zeitzonenoffset von GMT−07:00 an. Was wird die Ausgabe enthalten?
const date = new Date(2020)console.log(date.getFullYear())Eine Date-Instanz, die mit einem einzelnen Integer-Argument erstellt wird, wird als Unix-Epoch-Wert interpretiert. Die Epoch ist die Anzahl der Millisekunden seit dem 1. Januar 1970.
Ein Wert von 2020 (Millisekunden) entspricht 2 Sekunden nach dem 1. Januar 1970.
Da unsere lokale Zeitzone jedoch einen negativen Offset von -7 Stunden hat, landen wir bei Wed Dec 31 1969 17:00:02 GMT-0700 (Mountain Standard Time).
Du kannst den lokalen Zeitzonen-Offset umgehen, indem du .getUTCFullYear() verwendest.
Was wird die Ausgabe enthalten?
var date = Date.UTC('2020-01-02T00:00')console.log(date.toUTCString())Date.UTC("2020-01-01") versucht, den String als numerisches Jahr umzuwandeln, und liefert hier NaN. Date.UTC gibt eine Zahl zurück, kein Date-Objekt. Deshalb schlägt der anschließende Aufruf .toUTCString() mit einem TypeError fehl.
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d = new Date(2020, 0, 1)d.setDate(1)console.log(d)Die Methode .setDate() setzt den Tag des Monats, basierend auf dem aktuellen Monat der jeweiligen Instanz.
Wenn ein Wert außerhalb der verfügbaren Anzahl von Tagen angegeben wird, wird der Monatswert der Datumsinstanz angepasst (z. B. wird ein setDate(32) im Januar als 1. Februar berechnet).
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d = new Date(2020, 0, 1)d.setMonth(1)console.log(d)Die Methode .setMonth() setzt den Monat für eine bestimmte Datumsinstanz.
Das Monatsargument ist nullbasiert, mit einem Bereich von 0-11 (bei Verwendung des westlichen Kalenders).
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d = new Date(2020, 0, 1)d.setMonth(12)console.log(d)Die Methode .setMonth() setzt den Monat für eine gegebene Datumsinstanz.
Das month-Argument ist nullbasiert, mit 12 Werten im Bereich von 0-11 (bei Verwendung westlicher Kalender).
Hier sehen wir, dass das Jahr auf 2021 angepasst wird, da setMonth(12) um 1 höher ist als 11 (Dezember).
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d = new Date(2020, 0, 1)d.setMonth(13)console.log(d)Die Methode .setMonth() setzt den Monat für eine bestimmte Datumsinstanz.
Das Monatsargument ist nullbasiert, mit einem Bereich von 0-11 (im westlichen Kalender).
Hier sehen wir, dass Monat und Jahr auf Februar 2021 angepasst werden, da setMonth(13) um 2 über dem Wert 11 (Dezember) liegt.
Welches lokale Kalenderdatum stellt das Ergebnis dar? Die genaue Konsolendarstellung hängt von der Laufzeit ab.
const d = new Date(2020, 0, 1)d.setMonth(-1)console.log(d)Die Methode .setMonth() setzt den Monat für eine bestimmte Datumsinstanz.
Das Monatsargument ist nullbasiert und hat einen Bereich von 0-11 (im westlichen Kalender).
Hier sehen wir, dass Monat und Jahr auf Dezember 2019 zurückspringen, da setMonth(-1) kleiner als 0 (Januar) ist.
