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

Date.prototype.toUTCString()

Methode

Gibt das Datum als String im HTTP-Datumsformat nach RFC 7231 in UTC zurück, z. B. <code>"Tue, 14 May 2024 08:30:00 GMT"</code>.

seit JavaScript ES1 (Format standardisiert seit ES2018) – Baseline Kategorie: method-property

Signatur

Date.prototype.toUTCString()

Beschreibung

toUTCString() wandelt ein Date-Objekt in einen gut lesbaren String in koordinierter Weltzeit (UTC) um. Das Format entspricht dem IMF-fixdate aus RFC 7231: Www, DD Mmm YYYY HH:MM:SS GMT. Wochentag und Monat stehen immer als englische Kürzel da, egal welche Sprache oder Region der Nutzer eingestellt hat.

Weil das Format dem HTTP-Standard folgt, eignet sich die Methode gut für Header wie Expires, Last-Modified und If-Modified-Since sowie für das expires-Attribut von Cookies. Auch in Logausgaben ist sie praktisch, wenn Zeitangaben unabhängig von der Zeitzone gleich aussehen sollen.

Anders als bei RFC 7231 sind hier auch negative Jahre erlaubt. Sie erscheinen mit Minuszeichen, zum Beispiel -0044. Jahre unter 1000 werden mit Nullen auf vier Stellen aufgefüllt. Zeitangaben für Maschinen, etwa in JSON oder Datenbanken, speichert man besser mit toISOString(). Für Texte, die Nutzer lesen, ist toLocaleString() bzw. Intl.DateTimeFormat die bessere Wahl.

Rückgabewert

Typ
string
Beschreibung
Ein String im Format Www, DD Mmm YYYY HH:MM:SS GMT, der das Datum in UTC darstellt. Bei einem ungültigen Datum kommt "Invalid Date" zurück.

Beispiele

Grundlegende Umwandlung in UTC

// Monat ist nullbasiert: 4 = Mai
const datum = new Date(Date.UTC(2024, 4, 14, 8, 30, 0));
console.log(datum.toUTCString());
Tue, 14 May 2024 08:30:00 GMT

Cookie mit Ablaufdatum setzen

const setzeCookie = (name, wert, tage) => {
  const ablauf = new Date(Date.now() + tage * 24 * 60 * 60 * 1000);
  document.cookie = `${name}=${encodeURIComponent(wert)}; expires=${ablauf.toUTCString()}; path=/`;
};

setzeCookie('theme', 'dark', 30);
console.log(document.cookie);
theme=dark

HTTP-Header in Node.js setzen

import http from 'node:http';

const letzteAenderung = new Date('2024-01-01T12:00:00Z');

http.createServer((req, res) => {
  const expires = new Date(Date.now() + 3600 * 1000); // 1 Stunde
  res.setHeader('Last-Modified', letzteAenderung.toUTCString());
  res.setHeader('Expires', expires.toUTCString());
  res.end('OK');
}).listen(3000);

console.log(letzteAenderung.toUTCString());
Mon, 01 Jan 2024 12:00:00 GMT

Negative Jahre und ungültige Daten

const antike = new Date(Date.UTC(-44, 2, 15));
console.log(antike.toUTCString());

const kaputt = new Date('kein Datum');
console.log(kaputt.toUTCString());
Fri, 15 Mar -0044 00:00:00 GMT Invalid Date

// Wichtig · Fallstricke

  • Kein ISO-Format: Der String folgt nicht ISO 8601. Für JSON, APIs und Datenbanken ist toISOString() die richtige Wahl. toUTCString() ist für HTTP-Header, Cookies und Logs gedacht.
  • Immer Englisch: Wochentag und Monat erscheinen unabhängig von der Sprache immer englisch abgekürzt. Für deutsche Ausgaben nimmt man toLocaleString('de-DE', { timeZone: 'UTC' }).
  • Keine Ausnahme bei ungültigem Datum: Anders als toISOString() (wirft RangeError) liefert toUTCString() einfach "Invalid Date". Wer das nicht prüft, kann kaputte Header erzeugen. Vorher mit Number.isNaN(datum.getTime()) prüfen.
  • Kompatibilität: Die Methode gibt es in allen Browsern und in Node.js. Das genaue Format ist erst seit ES2018 vorgeschrieben. Sehr alte Engines lieferten teils leicht abweichende Formate, z. B. UTC statt GMT.
  • toGMTString() ist ein veralteter Alias. Er ist nur aus Kompatibilitätsgründen noch vorhanden und sollte nicht mehr verwendet werden.