Lädt...

Datum und Uhrzeit

Suchergebnisse kennst du schon: eine Fachnummer, −1, ja oder nein, oder die Marke selbst. Ein Datum ist kein Treffer in einer Liste. Du stellst einen Zeitpunkt hin und liest an ihm wie an einer Uhr, die du selbst gestellt hast. Der Lesesaal macht am Donnerstag, dem 14. März 2024, um 9:30 auf, und genau dieser Morgen bleibt stehen, auch wenn du die Seite neu lädst.

Wandkalender und Objekt reden aneinander vorbei

Für dich ist der März der dritte Monat. Im Objekt, das du aus Jahr, Monatszahl, Tag, Stunde und Minute baust, bekommt der Januar die 0, also liegt der März bei 2. Wer die beiden Zählungen in einen Topf wirft, baut stillschweigend den April.

Sechs Zahlen, die nur für diesen Morgen gelten

Jede Zeile gilt für denselben Donnerstag. Lies sie als Paare, die im Kurs leicht den Platz tauschen.

📊 Zettel zu diesem Donnerstag

Methode Wonach du fragst Zahl an diesem Morgen Was danebenliegt
getFullYear das Jahr ausgeschrieben 2024 die Kurzform 24
getMonth wo der März im Objekt liegt 2 ihn als 3 zu lesen
getDate der wievielte Tag 14 der Wochentag
getDay welcher Wochentag 4 der wievielte
getHours die Stunde von 0 bis 23 9 eine Extra-Marke für den Vormittag
getMinutes die Minute 30 die 30 bei der Stunde zu suchen

Januar 0, Februar 1, März 2. Sonntag 0, Montag 1, Dienstag 2, Mittwoch 3, Donnerstag 4. Die Null aus der Array-Suche war ein Fach. Diese Nullen sind der Anfang der Woche und des Jahres.

Zuerst die vier Stellen des Jahres

Vier Stellen, nicht zwei. Der Konstruktor nimmt danach noch Monat, Tag, Stunde und Minute, aber die erste Abfrage lässt alles außer 2024 weg.

Das Jahr am Donnerstag

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());

Du siehst 2024, weil genau das an erster Stelle stand. Die 2 für den Monat bleibt in dieser Zeile unsichtbar und meint trotzdem schon den März. Eine zweistellige Jahreszahl kommt aus dieser Abfrage nicht.

März, wie ihn das Objekt führt

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());

Von der 0 des Januars sind es zwei Schritte, und genau die 2 steht jetzt da. April wäre erst die 3. Wer später einen Satz für einen Leser schreibt, rückt dort eine Stelle weiter. Diese Abfrage lässt du so stehen, wie das Objekt sie führt.

Der 14. und der Donnerstag

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());

14 ist der Tag im Monat, 4 ist Donnerstag. Dass die beiden Zeilen untereinander stehen, heißt nur, dass du beide Fragen gestellt hast. Vertauscht du die Methoden, hältst du den Wochentag für ein Datum oder das Datum für einen Wochentag.

Neun Uhr dreißig

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());

Zuerst die 9, danach die 30. Stunden laufen von 0 um Mitternacht bis 23, darum ist diese 9 der Vormittag und braucht keine eigene Kennung. Die 30 gehört zur Minute. Wer sie von der Stunde erwartet, fragt am falschen Zeiger.

Der Besuch am 20.

javascript
let opened = new Date(2024, 2, 14, 9, 30);
let visit = new Date(2024, 2, 20, 15, 0);
console.log(visit.getTime() > opened.getTime());
console.log(visit.getDate());

Der Besuch ist der 20. März um 15 Uhr, also später als die Eröffnung. getTime macht aus jedem Zeitpunkt eine Zahl, die du der Größe nach ordnen kannst, und der Vergleich wird true. Danach kommt 20, der Tag dieses Besuchs. Mit === fragst du nicht, wer später ist. Du fragst nur, ob beide Namen dasselbe Objekt meinen. Hier sind es zwei.

Der Satz, den jemand ohne Code lesen soll

Jahr und Tag nimmst du, wie sie sind. Den Monat schreibst du so, wie ihn der Wandkalender zählt.

Zeile für den Leser

html
<!DOCTYPE html>
<html>
<head>
<title>dates — page</title>
</head>
<body>
<p id="when">…</p>
<script>
let opened = new Date(2024, 2, 14, 9, 30);
let year = opened.getFullYear();
let displayMonth = opened.getMonth() + 1;
let day = opened.getDate();
let box = document.getElementById("when");
box.textContent = year + "-" + displayMonth + "-" + day;
</script>
</body>
</html>

Im Absatz steht 2024-3-14. Fragst du das Objekt noch einmal nach dem Monat, bleibt es bei 2. Die verschobene Zahl lebt nur in dem Satz fürs Auge. Gespeichert ist der Morgen unverändert.

Sechs Stellen, an denen der Morgen stimmen muss

Nicht raten, nachsehen.

  1. Das Jahr ist 2024, ausgeschrieben, nicht 24
  2. Im Objekt liegt der März bei 2
  3. Der 14. kommt von getDate, die 4 für Donnerstag von getDay
  4. Die Stunde ist 9, die Minute ist 30
  5. Der Besuch am 20. liegt später, der Vergleich ist true, und sein Tag ist 20
  6. Der Absatz zeigt 2024-3-14, das Objekt behält den Monat als 2

Kein Fehler, und trotzdem das falsche Datum

Das Programm läuft weiter. Nur der Tag, den du meinst, ist ein anderer.

  • Eine 3 für den März übergibst du, und heraus kommt der April
  • Die 2 liest du als Februar, oder du verlangst von getMonth eine 3
  • Die 14 holst du mit getDay
  • Die 4 des Donnerstags holst du mit getDate
  • Welcher Zeitpunkt später liegt, entscheidest du mit ===
  • new Date() rufst du ohne Angaben auf, und jedes Neuladen setzt einen anderen Morgen hin

Was nach der Stunde noch dastehen soll

  • März ist 2, weil Januar 0 ist
  • Der wievielte ist getDate
  • Der Wochentag ist getDay, Sonntag ist 0
  • Zwei Zeitpunkte ordnest du über die Zahl von getTime
  • Im Satz für den Menschen steht der Monat eine Zahl weiter als im Objekt, und das Objekt bleibt bei 2
  • Als Nächstes kommt das Objekt Math

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
8
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt