Start · Sprachen · JavaScript · Referenz · Date.prototype.toDateString()

Date.prototype.toDateString()

Methode

Gibt den Datumsteil eines <code>Date</code>-Objekts als englischen, gut lesbaren String in der lokalen Zeitzone zurück, z. B. <code>"Tue Mar 12 2024"</code>.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

Date.prototype.toDateString()

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

Typ
string
Beschreibung
Der Datumsteil in der lokalen Zeitzone im Format "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());
Tue Mar 12 2024 Tue Mar 12 2024 14:30:00 GMT+0100 (Mitteleuropäische Normalzeit)

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));
true false

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));
}
Mon Jan 15 2024 [ 'Login', 'Upload' ] Tue Jan 16 2024 [ 'Logout' ]

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));
Invalid Date —

// Wichtig · Fallstricke

  • Immer Englisch: Die Ausgabe wird nicht lokalisiert. Für deutsche Datumsangaben wie „12.3.2024“ nimmt man toLocaleDateString('de-DE') oder Intl.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, nimmt toUTCString() oder toISOString().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 sich toISOString().
  • 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 this aufgerufen, das kein Date ist, entsteht ein TypeError.
  • 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.