Temporal.ZonedDateTime.from()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die statische Methode Temporal.ZonedDateTime.from() erstellt ein neues Temporal.ZonedDateTime-Objekt aus einem anderen Temporal.ZonedDateTime-Objekt, einem Objekt mit Datums-, Zeit- und Zeitzoneneigenschaften oder einem RFC 9557-String.

Syntax

js
Temporal.ZonedDateTime.from(info)
Temporal.ZonedDateTime.from(info, options)

Parameter

info

Einer der folgenden:

  • Eine Temporal.ZonedDateTime-Instanz, die eine Kopie der Instanz erstellt.
  • Ein RFC 9557-Format-String, der ein Datum, optional eine Uhrzeit, optional einen Offset, eine Zeitzonenannotation und optional einen Kalender enthält.
  • Ein Objekt mit Eigenschaften, die entweder von Temporal.PlainDate.from() (calendar, era, eraYear, year, month, monthCode, day) oder Temporal.PlainTime.from() (hour, minute, second, millisecond, microsecond, nanosecond) akzeptiert werden. Die Information sollte explizit ein Jahr (als year oder als era und eraYear), einen Monat (als month oder monthCode) und einen Tag angeben; andere sind optional und werden auf ihre Standardwerte gesetzt. Die folgenden Eigenschaften sollten auch bereitgestellt werden:
    timeZone

    Entweder ein String oder eine Temporal.ZonedDateTime-Instanz, die die zu verwendende Zeitzone darstellt. Wenn eine Temporal.ZonedDateTime-Instanz, wird deren Zeitzone verwendet. Wenn ein String, kann es sich um einen benannten Zeitzonenbezeichner, einen Offset-Zeitzonenbezeichner oder einen Datum-Zeit-String handeln, der einen Zeitzonenbezeichner oder einen Offset enthält (siehe Zeitzonen und Offsets für weitere Informationen). Die Zeitdaten werden in dieser Zeitzone interpretiert.

    offset Optional

    Ein Offset-String, im gleichen Format wie der RFC 9557-Offset, jedoch mit optionalen Sekunden- und Untersekundenkomponenten (±HH:mm:ss.sssssssss), der den Offset von UTC darstellt. Wenn weggelassen, wird er aus der Zeitzone und dem Datum-Zeit bestimmt. "Z" ist nicht erlaubt.

options Optional

Ein Objekt, das einige oder alle der folgenden Eigenschaften enthält (in der Reihenfolge, in der sie abgerufen und validiert werden):

disambiguation Optional

Was zu tun ist, wenn das lokale Datum-Zeit in der angegebenen Zeitzone mehrdeutig ist (es gibt mehr als einen Zeitpunkt mit dieser lokalen Zeit oder die lokale Zeit existiert nicht). Mögliche Werte sind "compatible", "earlier", "later" und "reject". Standard ist "compatible". Für weitere Informationen über diese Werte siehe Mehrdeutigkeiten und Lücken von lokaler Zeit zu UTC-Zeit.

offset Optional

Was zu tun ist, wenn der Offset in info explizit angegeben ist, aber der Offset für die gegebene Zeitzone in der gegebenen lokalen Zeit ungültig ist. Mögliche Werte sind "use", "ignore", "reject" und "prefer". Standard ist "reject". Für weitere Informationen über diese Werte siehe Offset-Mehrdeutigkeit.

overflow Optional

Ein String, der das Verhalten angibt, wenn eine Datumskomponente außerhalb des gültigen Bereichs liegt (wenn das Objekt info verwendet wird). Mögliche Werte sind:

"constrain" (Standard)

Die Datumskomponente wird geklammert in den gültigen Bereich.

"reject"

Es wird ein RangeError ausgelöst, wenn die Datumskomponente außerhalb des gültigen Bereichs liegt.

Rückgabewert

Ein neues Temporal.ZonedDateTime-Objekt, das das durch info in dem angegebenen calendar und timeZone festgelegte Datum und die Zeit repräsentiert.

Ausnahmen

TypeError

Wird in einem der folgenden Fälle ausgelöst:

  • info ist kein Objekt oder String.
  • options ist kein Objekt oder undefined.
  • Die bereitgestellten Eigenschaften sind unzureichend, um ein Datum eindeutig zu bestimmen. Sie müssen normalerweise ein year (oder era und eraYear), ein month (oder monthCode) und einen day angeben.
RangeError

Wird in einem der folgenden Fälle ausgelöst:

  • Die bereitgestellten Eigenschaften, die dieselbe Komponente spezifizieren, sind inkonsistent.
  • Die bereitgestellten nicht-numerischen Eigenschaften sind nicht gültig; zum Beispiel, wenn monthCode nie ein gültiger Monatscode in diesem Kalender ist.
  • Die bereitgestellten numerischen Eigenschaften liegen außerhalb des gültigen Bereichs, und options.overflow ist auf "reject" gesetzt.
  • Die Wandzeit ist in der Zeitzone mehrdeutig, und options.disambiguation ist auf "reject" gesetzt.
  • Die Information liegt nicht im darstellbaren Bereich, der ±108 Tage oder etwa ±273,972.6 Jahre vom Unix-Epoch umfasst.

Beispiele

Erstellen eines ZonedDateTime aus einem Objekt

js
// Year + month + day + hour + minute + second
const zdt = Temporal.ZonedDateTime.from({
  timeZone: "America/New_York",
  year: 2021,
  month: 7,
  day: 1,
  hour: 12,
  minute: 34,
  second: 56,
});
console.log(zdt.toString()); // "2021-07-01T12:34:56-04:00[America/New_York]"

Erstellen eines ZonedDateTime aus einem String

js
const zdt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:34:56-04:00[America/New_York]",
);
console.log(zdt.toLocaleString()); // "7/1/2021, 12:34:56 PM EDT" (assuming en-US locale)

// Time given as UTC, and converted to local
const zdt2 = Temporal.ZonedDateTime.from(
  "2021-07-01T12:34:56Z[America/New_York]",
);
console.log(zdt2.toString()); // "2021-07-01T08:34:56-04:00[America/New_York]"

Erstellen eines ZonedDateTime aus einem ISO 8601 / RFC 3339-String

Beachten Sie, dass Temporal.ZonedDateTime.from() ISO 8601-Strings ablehnt, die keinen Zeitzonenbezeichner enthalten. Dies stellt sicher, dass die Zeitzone immer bekannt ist und verwendet werden kann, um verschiedene Offsets abzuleiten, wenn sich die lokale Zeit ändert.

Wenn Sie einen ISO 8601-String analysieren möchten, konstruieren Sie zunächst ein Temporal.Instant-Objekt und konvertieren Sie es dann in ein Temporal.ZonedDateTime-Objekt. Sie können jede Zeitzone angeben, selbst wenn sie nicht mit dem ursprünglich im String gegebenen Offset übereinstimmt, und die lokale Zeit wird entsprechend angepasst.

js
const isoString = "2021-07-01T12:34:56+02:00";
const instant = Temporal.Instant.from(isoString);
const zdt = instant.toZonedDateTimeISO("America/New_York");
console.log(zdt.toString()); // "2021-07-01T06:34:56-04:00[America/New_York]"

Lokale Zeit-Mehrdeutigkeit

Siehe Mehrdeutigkeiten und Lücken von lokaler Zeit zu UTC-Zeit für eine Einführung in diese Situation.

js
const localTimeNotExist = "2024-03-10T02:05:00[America/New_York]";
// For non-existent times, "compatible" is equivalent to "later"
const zdt = Temporal.ZonedDateTime.from(localTimeNotExist);
console.log(zdt.toString()); // "2024-03-10T03:05:00-04:00[America/New_York]"

const zdt2 = Temporal.ZonedDateTime.from(localTimeNotExist, {
  disambiguation: "earlier",
});
console.log(zdt2.toString()); // "2024-03-10T01:05:00-05:00[America/New_York]"

const localTimeAmbiguous = "2024-11-03T01:05:00[America/New_York]";
// For ambiguous times, "compatible" is equivalent to "earlier"
const zdt3 = Temporal.ZonedDateTime.from(localTimeAmbiguous);
console.log(zdt3.toString()); // "2024-11-03T01:05:00-04:00[America/New_York]"

const zdt4 = Temporal.ZonedDateTime.from(localTimeAmbiguous, {
  disambiguation: "later",
});
console.log(zdt4.toString()); // "2024-11-03T01:05:00-05:00[America/New_York]"

Auflösen von Offset-Mehrdeutigkeiten

Siehe Offset-Mehrdeutigkeit für eine Einführung in diese Situation.

js
const offsetAmbiguous = "2019-12-23T12:00:00-02:00[America/Sao_Paulo]";

Temporal.ZonedDateTime.from(offsetAmbiguous);
// RangeError: date-time can't be represented in the given time zone
Temporal.ZonedDateTime.from(offsetAmbiguous, { offset: "use" }).toString();
// "2019-12-23T11:00:00-03:00[America/Sao_Paulo]"
Temporal.ZonedDateTime.from(offsetAmbiguous, { offset: "ignore" }).toString();
// "2019-12-23T12:00:00-03:00[America/Sao_Paulo]"

Für weitere Beispiele, insbesondere bei verschiedenen Kalendern und Überlaufeinstellungen, siehe Temporal.PlainDate.from() und Temporal.PlainTime.from().

Spezifikationen

Specification
Temporal
# sec-temporal.zoneddatetime.from

Browser-Kompatibilität

Siehe auch