Signatur
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
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());
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);
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());
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());
// 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()(wirftRangeError) lieferttoUTCString()einfach"Invalid Date". Wer das nicht prüft, kann kaputte Header erzeugen. Vorher mitNumber.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.
UTCstattGMT. toGMTString()ist ein veralteter Alias. Er ist nur aus Kompatibilitätsgründen noch vorhanden und sollte nicht mehr verwendet werden.