Automatische Datumskorrektur in JavaScript
JavaScript hat eine sehr interessante und nützliche
Eigenschaft: Wenn beim Erstellen eines Date-Objekts
ein ungültiger Zeitpunkt angegeben wurde -
wird dieser automatisch in einen gültigen umgerechnet.
Lasst uns das an einem Beispiel sehen.
Wie Sie wissen, existiert der 35. Januar nicht.
Der maximal mögliche Tag im Januar ist der 31.
Somit hat unser Datum, der 35. Januar,
4 überzählige Tage. JavaScript addiert in einem solchen
Fall einfach diese überzähligen 4
Tage zum folgenden Monat:
let date = new Date(2018, 0, 35);
console.log(date); // ergibt den 4. Februar
Man kann nicht nur überzählige Tage, sondern
auch Monate angeben. Dabei sollte man beachten, dass Monate
bei Null beginnen, der letzte gültige
Monat also der 11te ist. Wenn man den 12ten
Monat angibt, erhält man den Januar des folgenden Jahres:
let date = new Date(2018, 12, 1); // wir geben den 12. Monat an
console.log(date); // ergibt den 1. Januar 2019
Die beschriebene Korrektur funktioniert auch in die kleinere
Richtung. Wie Sie wissen, ist der kleinste
Tag eines Monats der Tag mit der Nummer 1.
Wenn man also den Tag mit der Nummer 0 angibt,
erhält man den letzten Tag des vorherigen Monats:
let date = new Date(2018, 1, 0); // wir geben den nullten Tag an
console.log(date); // ergibt den 31. Januar
Man kann auch negative Werte für Tage
und Monate angeben. Dabei muss man bedenken, dass
der kleinste Tag die Nummer 1 hat, und
der kleinste Monat die Nummer 0. Das bedeutet,
dass der minus erste Tag auf den 2
Tag vom Ende des vorherigen Monats fällt, und der minus
erste Monat einfach auf den letzten
Monat des vorherigen Jahres fällt:
let date = new Date(2018, 1, -1); // wir geben -1 Tag an
console.log(date); // ergibt den 30. Januar
let date = new Date(2018, -1, 1); // wir geben -1 Monat an
console.log(date); // ergibt den 1. Dezember 2017
Alles oben Gesagte funktioniert analog mit Stunden, Minuten und Sekunden:
let date = new Date(2018, 0, 1, 24, 0, 0); // wir geben die 24. Stunde an
console.log(date); // ergibt den 2. Januar, 0 Uhr
let date = new Date(2018, 0, 1, 25, 0, 0); // wir geben die 25. Stunde an
console.log(date); // ergibt den 2. Januar, 1 Uhr
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 1, 35);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 15, 1);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 3, 31);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 1, 31);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 12, 33);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 33, 33);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 5, 0);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 0, 0);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, -12, -33);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // welches Datum wird es sein?
Bestimmen Sie, in welches Datum JavaScript den folgenden Zeitpunkt umwandelt:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // welches Datum wird es sein?