Signatur
Beschreibung
Die Methode toDateString() liefert nur den Datumsteil eines Date-Objekts, also Wochentag, Monat, Tag und Jahr, ohne Uhrzeit und ohne Zeitzonenangabe. Die Werte werden in der lokalen Zeitzone der Laufzeitumgebung berechnet.
Seit ES2018 ist das Format fest vorgegeben: "Www Mmm DD YYYY", also z. B. "Fri Dec 24 2021". Wochentag und Monat sind immer englische Abkürzungen mit drei Buchstaben, der Tag ist zweistellig mit führender Null und das Jahr mindestens vierstellig. Die Ausgabe entspricht genau dem ersten Teil von Date.prototype.toString().
Die Methode passt gut zum Debuggen, für Logs oder für einen schnellen Vergleich, ob zwei Zeitpunkte auf denselben Kalendertag fallen. Für Texte, die Nutzer sehen, ist sie nicht geeignet, denn sie wird nicht an die Sprache angepasst. Dafür gibt es toLocaleDateString() oder Intl.DateTimeFormat. Zum Speichern oder Übertragen von Daten nimmt man besser toISOString().
Rückgabewert
"Www Mmm DD YYYY". Bei einem ungültigen Datum wird "Invalid Date" zurückgegeben.Beispiele
Einfache Ausgabe des Datumsteils
// Monat ist nullbasiert: 2 = März
const termin = new Date(2024, 2, 12, 14, 30);
console.log(termin.toDateString());
console.log(termin.toString());
Prüfen, ob zwei Zeitpunkte am selben Kalendertag liegen
const istGleicherTag = (a, b) => a.toDateString() === b.toDateString();
const morgens = new Date(2024, 5, 1, 8, 0);
const abends = new Date(2024, 5, 1, 22, 45);
const naechsterTag = new Date(2024, 5, 2, 0, 5);
console.log(istGleicherTag(morgens, abends));
console.log(istGleicherTag(abends, naechsterTag));
Log-Einträge nach Tagen gruppieren
const logs = [
{ msg: 'Login', at: new Date(2024, 0, 15, 9, 12) },
{ msg: 'Upload', at: new Date(2024, 0, 15, 17, 3) },
{ msg: 'Logout', at: new Date(2024, 0, 16, 8, 40) },
];
const proTag = Object.groupBy(logs, (e) => e.at.toDateString());
for (const [tag, eintraege] of Object.entries(proTag)) {
console.log(tag, eintraege.map((e) => e.msg));
}
Umgang mit ungültigen Daten
const ungueltig = new Date('kein Datum');
console.log(ungueltig.toDateString());
// Besser vorher prüfen
const formatiere = (d) =>
Number.isNaN(d.getTime()) ? '—' : d.toDateString();
console.log(formatiere(ungueltig));
// Wichtig · Fallstricke
- Immer Englisch: Die Ausgabe wird nicht lokalisiert. Für deutsche Datumsangaben wie „12.3.2024“ nimmt man
toLocaleDateString('de-DE')oderIntl.DateTimeFormat. - Die lokale Zeitzone zählt: Derselbe Zeitstempel kann je nach Zeitzone des Systems einen anderen Kalendertag ergeben. Ein Beispiel:
new Date('2024-03-12T23:30:00Z').toDateString()liefert in Berlin bereits"Wed Mar 13 2024". Wer UTC braucht, nimmttoUTCString()odertoISOString().slice(0, 10). - Nicht zum Speichern oder Parsen verwenden:
Date.parse()muss dieses Format nicht zuverlässig einlesen können, außerdem fehlen Uhrzeit und Zeitzone. Zum Serialisieren eignet sichtoISOString(). - Kein Fehler bei ungültigem Datum: Die Methode wirft keine Ausnahme, sondern gibt
"Invalid Date"zurück. - Nur für Date-Objekte: Wird sie mit einem
thisaufgerufen, das keinDateist, entsteht einTypeError. - Kompatibilität: Die Methode läuft in allen Browsern und in Node.js. Das genaue Ausgabeformat ist erst seit ES2018 festgelegt. Sehr alte Umgebungen konnten davon leicht abweichen.