JavaScript/Objekte/Date/setDate
Die Methode setDate() ändert den Monatstag, der in einem Datumsobjekt gespeichert ist. Der neue Monatstag ist als Parameter zu übergeben.
Syntax
dateObj.setDate(wert)
wert
ist eine ganze Zahl zwischen 1 und 31.
Rückgabewert ist die Anzahl der Millisekunden zwischen dem 1. Januar 1970 00:00:00 UTC und dem geänderten Date-Objekt.
Inhaltsverzeichnis
var neuesDatum = new Date(2017, 1, 05); // 5.2.2017 neuesDatum.setDate(31); console.log(neuesDatum.toLocaleDateString('de-DE')); // Ergebnis: 3.3.2017
wird das Datum ausgehend vom ersten Tag des Monats um die entsprechende Tageszahl vorgesetzt.
Übergeben Sie jedoch eine zu kleine Tageszahl, z.B.
var neuesDatum = new Date(2017, 1, 05); // 5.2.2017 neuesDatum.setDate(0); console.log(neuesDatum.toLocaleDateString('de-DE')); // Ergebnis: 31.1.2017 neuesDatum.setDate(-10); console.log(neuesDatum.toLocaleDateString('de-DE')); // Ergebnis: 21.1.2017so wird ausgehend vom letzten Tag des Vormonats die Tageszahl subtrahiert.
Anwendungsbeispiele
function changeDate() {
var gesetzt = new Date(),
tag = parseInt(this.value);
eingegeben.innerHTML = tag + ". " + monate[jetzt.getMonth()] + " " + jetzt.getFullYear();
gesetzt.setDate(tag);
resultierend.innerHTML = gesetzt.getDate() + ". " + monate[gesetzt.getMonth()] + " "
+ gesetzt.getFullYear();
eingegeben.className = eingegeben.innerHTML != resultierend.innerHTML ? "fehler" : "";
}
Das Beispiel erzeugt ein neues Datumsobjekt jetzt
mit dem aktuellen Datum, dessen mit getDate() ermittelter Tageswert in einem Slider dargestellt wird.
Bei einer Eingabe eines neuen Werts im Slider wird dieser Wert als einmal dargestellt wie eingegeben, also ggf. unsinnig und einmal so, wie setDate() das Datum tatsächlich ermittelt.
Das Datum in 4 Wochen
Das oben beschriebene Springen in den nächsten Monat mag auf den ersten Blick wie ein Bug aussehen, ist bei der Berechnung von in der Zukunft liegenden Daten jedoch sehr nützlich, weil man sich bei Berechnungen nicht um einen eventuellen Monatswechsel kümmern muss.
Beim Ändern des Datums mit höheren Werten wird das Datum automatisch richtig ermittelt.
function changeDate() {
var gesetzt = new Date(),
tage = parseInt(this.value);
gesetzt.setDate(jetzt.getDate() + tage);
resultierend.innerHTML = gesetzt.toLocaleDateString('de-DE');
if (tage < 0) {
label_resultierend.innerHTML = "vor " + (-1)*tage + " Tagen: ";
if (tage == -1) {
label_resultierend.innerHTML = "gestern: ";
}
}
else if (tage > 0) {
label_resultierend.innerHTML = "in " + tage + " Tagen: ";
if (tage == 1) {
label_resultierend.innerHTML = "morgen: ";
}
}
else {
label_resultierend.innerHTML = "heute: "
}
}
Das Beispiel erzeugt ein neues Datumsobjekt jetzt
mit dem aktuellen Datum, zu dessen mit getDate() ermitteltem Tageswert der Wert des Sliders addiert wird.
Diese Summe wird mit setDate() neu gesetzt und das neu gesetzte Datum und zum Vergleich das aktuelle Datum werden mit toLocaleDateString('de-DE'); formatiert und ausgegeben.
Siehe auch
Weblinks
- ECMAScript: ECMASript 1st Edition 1997 (pdf) date.prototype.setdate
- MDN: Global_Objects/Date/setDate