Start · Sprachen · JavaScript · Referenz · Date.UTC()

Date.UTC()

Methode

Wandelt Datums- und Zeitkomponenten, die als UTC interpretiert werden, in einen Zeitstempel um (Millisekunden seit 1. Januar 1970, 00:00:00 UTC).

seit JavaScript ES1 (monthIndex optional seit ES2017) – Baseline: Kategorie: method-property

Signatur

Date.UTC(year, monthIndex, day, hours, minutes, seconds, milliseconds)

Beschreibung

Die statische Methode Date.UTC() nimmt dieselben Komponenten entgegen wie der Date-Konstruktor (Jahr, Monat, Tag, Stunde …). Der Unterschied: Sie werden immer als UTC interpretiert und nicht in der lokalen Zeitzone der Laufzeitumgebung. Zurück kommt kein Date-Objekt, sondern eine Zahl, nämlich der Zeitstempel in Millisekunden seit der Unix-Epoche.

Damit eignet sich Date.UTC() gut, um Zeitpunkte unabhängig von der Zeitzone festzulegen, etwa für Server-Kommunikation, Tests mit festen Zeitpunkten, Datumsberechnungen ohne Sommerzeitprobleme oder den Vergleich von Kalendertagen. Das Ergebnis lässt sich direkt an new Date(timestamp) übergeben.

Wie beim Konstruktor ist der Monat nullbasiert (0 = Januar, 11 = Dezember). Werte außerhalb des üblichen Bereichs werden „überlaufend“ verrechnet: Date.UTC(2024, 0, 32) ergibt z. B. den 1. Februar 2024. Jahreszahlen von 0 bis 99 werden als 1900–1999 gedeutet.

Parameter

Name Typ Default Beschreibung
$year Pflicht number Das Jahr. Werte von 0 bis 99 werden als 1900–1999 gedeutet.
$monthIndex number 0 Monat, nullbasiert (0 = Januar bis 11 = Dezember). Seit ES2017 optional.
$day number 1 Tag im Monat (1–31).
$hours number 0 Stunde (0–23).
$minutes number 0 Minuten (0–59).
$seconds number 0 Sekunden (0–59).
$milliseconds number 0 Millisekunden (0–999).

Rückgabewert

Typ
number
Beschreibung
Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 UTC. NaN, wenn ein Argument nicht in eine gültige Zahl umgewandelt werden kann oder das Ergebnis außerhalb des gültigen Bereichs liegt (±8,64 × 1015 ms).

Beispiele

Zeitstempel für einen festen UTC-Zeitpunkt

const ts = Date.UTC(2024, 2, 15, 12, 30); // 15. März 2024, 12:30 UTC
console.log(ts);
console.log(new Date(ts).toISOString());
1710505800000 2024-03-15T12:30:00.000Z

Unterschied zum lokalen Date-Konstruktor

// Angenommen, die lokale Zeitzone ist Europe/Berlin (UTC+1 im Januar)
const lokal = new Date(2024, 0, 1).getTime();
const utc = Date.UTC(2024, 0, 1);
console.log((lokal - utc) / 3_600_000, 'Stunden Differenz');
-1 Stunden Differenz

Tage zwischen zwei Daten ohne Sommerzeitfehler

const tageZwischen = (a, b) => {
  const utcA = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  const utcB = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
  return Math.round((utcB - utcA) / 86_400_000);
};

console.log(tageZwischen(new Date(2024, 2, 1), new Date(2024, 3, 1)));
31

Überlauf und Monatsende ermitteln

// Tag 0 des Folgemonats = letzter Tag des aktuellen Monats
const letzterTag = (jahr, monat) =>
  new Date(Date.UTC(jahr, monat + 1, 0)).getUTCDate();

console.log(letzterTag(2024, 1)); // Februar 2024
console.log(new Date(Date.UTC(2024, 0, 32)).toISOString());
29 2024-02-01T00:00:00.000Z

// Wichtig · Fallstricke

  • Nullbasierter Monat: Date.UTC(2024, 12, 1) ist der 1. Januar 2025, nicht der 1. Dezember 2024. Das ist die häufigste Fehlerquelle.
  • Rückgabewert ist eine Zahl: Um ein Datumsobjekt zu erhalten, das Ergebnis in new Date(...) einpacken.
  • Zweistellige Jahre: Date.UTC(24, 0) ergibt 1924. Für Jahre von 0 bis 99 stattdessen setUTCFullYear() verwenden.
  • Nur ein Argument: Date.UTC(2024) liefert seit ES2017 den 1. Januar 2024. Sehr alte Engines gaben dabei NaN zurück. Ohne Argumente ist das Ergebnis immer NaN.
  • Für die Ausgabe von UTC-Werten die getUTC*()-Methoden oder toISOString() nutzen, nicht getHours() und Co., die lokale Zeit liefern.
  • Kompatibilität: Die Methode wird in allen Browsern und in Node.js unterstützt. Für komplexe Zeitzonenlogik lohnt sich ein Blick auf die kommende Temporal-API.