Signatur
Beschreibung
setMinutes() ändert die Minuten-Komponente eines vorhandenen Date-Objekts in der lokalen Zeitzone. Die Methode verändert das Objekt direkt. Sie gibt kein neues Datum zurück, sondern den neuen Zeitstempel in Millisekunden seit dem 1. Januar 1970 (UTC).
Mit den optionalen Parametern secondsValue und msValue setzt du Sekunden und Millisekunden im selben Aufruf, zum Beispiel um auf eine volle Minute zu runden. Lässt du sie weg, bleiben die bisherigen Werte von getSeconds() und getMilliseconds() erhalten.
Werte außerhalb des üblichen Bereichs sind erlaubt und werden übertragen: setMinutes(60) springt auf Minute 0 der nächsten Stunde, setMinutes(-1) auf Minute 59 der vorherigen Stunde. Deshalb eignet sich die Methode gut für einfache Zeitrechnung wie „in 90 Minuten“.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $minutesValue Pflicht | number | Ganze Zahl für die Minuten, normalerweise 0–59. Andere Werte werden auf Stunden, Tage usw. übertragen. | |
| $secondsValue | number | aktueller Wert von <code>getSeconds()</code> | Sekunden, normalerweise 0–59. |
| $msValue | number | aktueller Wert von <code>getMilliseconds()</code> | Millisekunden, normalerweise 0–999. Darf nur zusammen mit secondsValue angegeben werden. |
Rückgabewert
getTime()). Ist das Datum ungültig oder ein Argument NaN, wird NaN zurückgegeben und das Datum wird ungültig (Invalid Date).Beispiele
Minuten eines Termins setzen
const termin = new Date(2024, 4, 15, 14, 10, 30);
termin.setMinutes(45);
console.log(termin.toLocaleTimeString('de-DE'));
Auf volle Minute abrunden (Sekunden und Millisekunden auf 0)
const jetzt = new Date(2024, 0, 1, 9, 17, 42, 512);
jetzt.setMinutes(jetzt.getMinutes(), 0, 0);
console.log(jetzt.toLocaleTimeString('de-DE'));
Zeitspanne addieren mit Übertrag
// Ablaufzeit einer Sitzung: in 90 Minuten
const addMinutes = (date, min) => {
const d = new Date(date); // Original nicht verändern
d.setMinutes(d.getMinutes() + min);
return d;
};
const start = new Date(2024, 11, 31, 23, 0);
const ende = addMinutes(start, 90);
console.log(ende.toLocaleString('de-DE'));
Auf 15-Minuten-Raster runden (Kalender-Slots)
const snapTo15 = (date) => {
const d = new Date(date);
d.setMinutes(Math.round(d.getMinutes() / 15) * 15, 0, 0);
return d;
};
console.log(snapTo15(new Date(2024, 5, 1, 10, 52)).toLocaleTimeString('de-DE'));
// Wichtig · Fallstricke
- Verändert das Objekt direkt: Wenn du das Original behalten willst, kopiere es vorher mit
new Date(original). Vorsicht bei Datumsobjekten, die du an Funktionen weitergibst oder im State (etwa in React) ablegst. - Ortszeit vs. UTC:
setMinutes()rechnet in der lokalen Zeitzone. Für zeitzonenunabhängige Berechnungen verwendesetUTCMinutes(). Die meisten Zeitzonen weichen um volle Stunden ab, einige aber nicht (z. B. Indien +5:30, Nepal +5:45). Dort unterscheiden sich lokale Minuten und UTC-Minuten. - Sommerzeit: Wird durch den Übertrag eine nicht existierende lokale Zeit erreicht (Zeitumstellung im Frühjahr), passt die Engine die Zeit an. Das Ergebnis kann um eine Stunde verschoben sein. Für exakte Zeitspannen ist es sicherer, Millisekunden über
getTime()/setTime()zu addieren. - NaN macht das Datum ungültig:
setMinutes(undefined)oder ein nicht numerischer String ergibt Invalid Date. Prüfe Eingaben vorher, z. B. mitNumber.isFinite(). - Nachkommastellen werden abgeschnitten (
setMinutes(10.9)ergibt 10). - Für neue Projekte lohnt sich ein Blick auf die
Temporal-API. Sie verändert Objekte nicht und behandelt Zeitzonen ausdrücklich, wird aber noch nicht in allen Browsern unterstützt.