Adding or subtracting date and time
Die date setter Methoden aus dem vorherigen Kapitel werden oft verwendet, um Datum und Zeit zu addieren oder zu subtrahieren:
const date = new Date(2025, 11, 25);// Date Thu Dec 25 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
const threeDaysLater = date.setDate(date.getDate() + 3);// -> Ergebnis ist ein Timestamp, den wir dann wieder umwandeln müssen:
const readableDate = new Date(threeDaysLater);// Date Sun Dec 28 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)Das Ergebnis ist zwar richtig (28. statt 25.), aber wenn wir nach dieser Operation das ursprüngliche Datum nochmal ausgeben … Überraschung! Das ursprüngliche Datum wurde geändert. Das sollte nicht sein, siehe auch Don’t mutate.
console.log(readableDate);// Date Sun Dec 28 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
console.log(date);// Date Sun Dec 28 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)The right way to use setDate
Section titled “The right way to use setDate”Wir können setDate verwenden, ohne das ursprüngliche Objekt zu mutieren, indem wir ein temporäres Datum erstellen:
const date = new Date(2025, 11, 25);const tempDate = new Date(date);const threeDaysLater = tempDate.setDate(tempDate.getDate() + 3);const readableDate = new Date(threeDaysLater);
console.log(date);// Date Thu Dec 25 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)console.log(readableDate);// Date Sun Dec 28 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)Alternative methods to add/subtract dates
Section titled “Alternative methods to add/subtract dates”Es gibt zwei weitere Methoden, mit denen wir Datum und Zeit addieren oder subtrahieren können, ohne den ursprünglichen Wert zu mutieren:
- neues Datum mit einem Timestamp
- neues Datum mit Argumenten
Beide Methoden lassen den ursprünglichen Wert unberührt und sind darüber hinaus besser lesbar.
Method 1: Create a new date with timestamp
Section titled “Method 1: Create a new date with timestamp”- hole den aktuellen Timestamp mit
getTime() - addiere oder subtrahiere den Timestamp, um einen neuen Timestamp zu bekommen
- erzeuge ein neues Datum mit dem neuen Timestamp
const date = new Date(2025, 11, 25);const timestampForOneDay = 86400000;const threeDaysLater = new Date(date.getTime() + timestampForOneDay * 3);Method 2: Create a new date with arguments
Section titled “Method 2: Create a new date with arguments”Dabei erstellen wir ein neues Date Objekt mit Werten für year, month, day und so weiter. Werte, die wir nicht brauchen, können wir einfach weglassen.
const date = new Date(2025, 11, 25);const year = date.getFullYear();const month = date.getMonth();const day = date.getDate();
console.log(date);// Date Thu Dec 25 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
console.log(threeDaysLater);const threeDaysLater = new Date(year, month, day + 3);// Date Sun Dec 28 2025 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)Calculating overflow values
Section titled “Calculating overflow values”Was passiert, wenn wir gegen Monatsende ein paar Tage dazuzählen oder vom Monatsanfang ein paar Tage subtrahieren wollen? Hier gibt es gute Nachrichten: JavaScript kümmert sich automatisch darum. Wenn der Wert, der dem Date Objekt übergeben wird, größer ist als die normalerweise akzeptierten Werte, rechnet JavaScript das Datum automatisch aus. Wenn z.B. zum 28. Februar 3 Tage addiert werden sollen, konvertiert JavaScript automatisch den 31. Februar zum 3. März.