Start · Sprachen · JavaScript · Referenz · new Temporal.PlainDateTime()

new Temporal.PlainDateTime()

Methode

Erzeugt ein <code>Temporal.PlainDateTime</code>-Objekt: Datum und Uhrzeit ohne Zeitzone. Grundlage sind Zahlenwerte im ISO-8601-Kalender.

seit JavaScript ES2026 (Temporal, Stage 4) – Firefox 139+, Chrome/ Kategorie: method-property

Signatur

new Temporal.PlainDateTime(year, month, day, hour, minute, second, millisecond, microsecond, nanosecond, calendar)

Beschreibung

Der Konstruktor Temporal.PlainDateTime() erzeugt einen Datums- und Uhrzeitwert, der zu keiner Zeitzone gehört. Solche Werte entsprechen dem, was auf einer Wanduhr oder in einem Kalender steht, zum Beispiel „15. März 2024, 14:30 Uhr“. Sie bezeichnen aber keinen exakten Zeitpunkt auf der Zeitachse. Typische Anwendungen sind Termine, Öffnungszeiten, Formulareingaben (<input type="datetime-local">) und alle Fälle, in denen die Zeitzone keine Rolle spielt oder später festgelegt wird.

Alle Werte werden als ganze Zahlen im ISO-8601-Kalender übergeben. Anders als beim alten Date beginnt month bei 1 (Januar = 1). Nur year, month und day sind Pflicht. Alle Zeitangaben sind standardmäßig 0, damit steht das Objekt auf Mitternacht. Mit dem optionalen Parameter calendar hängst du einen anderen Kalender an (z. B. "hebrew" oder "japanese"). Die Zahlen werden trotzdem als ISO-Werte ausgewertet.

Der Konstruktor ist streng: Werte außerhalb des gültigen Bereichs (etwa der 30. Februar oder Stunde 24) lösen einen RangeError aus. Sie werden nicht still korrigiert. In der Praxis nimmt man für Eingaben aus Texten oder Objekten meist Temporal.PlainDateTime.from(). Diese Methode kann auch Monatscodes und nicht-ISO-Kalenderfelder verarbeiten und mit overflow: "constrain" ungültige Werte auf den nächsten gültigen Wert setzen. Das entstehende Objekt ist unveränderlich (immutable). Methoden wie add() oder with() liefern immer neue Instanzen.

Parameter

Name Typ Default Beschreibung
$year Pflicht number ISO-Jahr als ganze Zahl, auch negativ oder 0 möglich (astronomische Jahreszählung).
$month Pflicht number ISO-Monat von 1 bis 12 (nicht 0-basiert wie bei Date).
$day Pflicht number ISO-Tag im Monat von 1 bis 31, je nach Monat und Schaltjahr.
$hour number 0 Stunde von 0 bis 23.
$minute number 0 Minute von 0 bis 59.
$second number 0 Sekunde von 0 bis 59. Schaltsekunden (60) werden nicht unterstützt.
$millisecond number 0 Millisekunde von 0 bis 999.
$microsecond number 0 Mikrosekunde von 0 bis 999.
$nanosecond number 0 Nanosekunde von 0 bis 999.
$calendar string "iso8601" Kalender-Kennung wie "iso8601", "gregory", "hebrew" oder "japanese". Groß- und Kleinschreibung wird ignoriert.

Rückgabewert

Typ
Temporal.PlainDateTime
Beschreibung
Ein neues, unveränderliches Temporal.PlainDateTime-Objekt mit den übergebenen Datums- und Zeitwerten.

Beispiele

Termin ohne Zeitzone anlegen

const meeting = new Temporal.PlainDateTime(2024, 3, 15, 14, 30);

console.log(meeting.toString());
console.log(meeting.month, meeting.dayOfWeek); // Monat 1-basiert, Montag = 1
console.log(meeting.toLocaleString('de-DE'));
2024-03-15T14:30:00 3 5 15.3.2024, 14:30:00

Nur Datum angeben – Uhrzeit ist Mitternacht

const start = new Temporal.PlainDateTime(2025, 1, 1);
const ende = start.add({ days: 2, hours: 8 });

console.log(start.toString());
console.log(ende.toString());
console.log(start.toString()); // Original bleibt unverändert
2025-01-01T00:00:00 2025-01-03T08:00:00 2025-01-01T00:00:00

Ungültige Werte: Konstruktor vs. from()

try {
  new Temporal.PlainDateTime(2024, 2, 30, 10, 0);
} catch (err) {
  console.log(err.name);
}

// from() kann den Wert stattdessen auf den nächsten gültigen setzen
const korrigiert = Temporal.PlainDateTime.from(
  { year: 2024, month: 2, day: 30, hour: 10 },
  { overflow: 'constrain' }
);
console.log(korrigiert.toString());
RangeError 2024-02-29T10:00:00

Anderen Kalender anhängen und in Zeitzone umwandeln

const dt = new Temporal.PlainDateTime(2024, 3, 15, 9, 0, 0, 0, 0, 0, 'hebrew');
console.log(dt.toString());
console.log(dt.year, dt.monthCode); // Werte im hebräischen Kalender

// Erst mit einer Zeitzone wird ein exakter Zeitpunkt daraus
const zoned = new Temporal.PlainDateTime(2024, 3, 15, 9, 0)
  .toZonedDateTime('Europe/Berlin');
console.log(zoned.toString());
2024-03-15T09:00:00[u-ca=hebrew] 5784 M06 2024-03-15T09:00:00+01:00[Europe/Berlin]