Temporal.PlainDate.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.PlainDate.from()
erstellt ein neues Temporal.PlainDate
-Objekt aus einem anderen Temporal.PlainDate
-Objekt, einem Objekt mit Datumeigenschaften oder einem RFC 9557-String.
Syntax
Temporal.PlainDate.from(info)
Temporal.PlainDate.from(info, options)
Parameter
info
-
Eines der folgenden:
-
Eine
Temporal.PlainDate
-Instanz, die eine Kopie der Instanz erstellt. -
Eine
Temporal.PlainDateTime
-Instanz, die das Kalenderdatum in derselben Weise bereitstellt wieTemporal.PlainDateTime.prototype.toPlainDate()
. -
Eine
Temporal.ZonedDateTime
-Instanz, die das Kalenderdatum in derselben Weise bereitstellt wieTemporal.ZonedDateTime.prototype.toPlainDate()
. -
Ein RFC 9557-String, der ein Datum und optional einen Kalender enthält.
-
Ein Objekt mit den folgenden Eigenschaften (in der Reihenfolge, in der sie abgerufen und validiert werden):
calendar
Optional-
Ein String, der der
calendarId
-Eigenschaft entspricht. SieheIntl.supportedValuesOf()
für eine Liste der häufig unterstützten Kalendertypen. Standardmäßig"iso8601"
. Alle anderen Eigenschaften werden in diesem Kalendersystem interpretiert (anders als derTemporal.PlainDate()
-Konstruktor, der die Werte im ISO-Kalendersystem interpretiert). day
-
Eine Ganzzahl, die der
day
-Eigenschaft entspricht. Muss positiv sein, unabhängig von deroverflow
-Option. era
underaYear
-
Ein String und eine Ganzzahl, die den Eigenschaften
era
underaYear
entsprechen. Werden nur verwendet, wenn das Kalendersystem Epochen hat.era
underaYear
müssen gleichzeitig angegeben werden. Mindestens eines voneraYear
(zusammen mitera
) oderyear
muss angegeben werden. Wenn alleera
,eraYear
undyear
angegeben sind, müssen sie konsistent sein. month
-
Entspricht der
month
-Eigenschaft. Muss positiv sein, unabhängig von deroverflow
-Option. Mindestens eines vonmonth
odermonthCode
muss angegeben werden. Wenn sowohlmonth
als auchmonthCode
angegeben sind, müssen sie konsistent sein. monthCode
-
Entspricht der
monthCode
-Eigenschaft. Mindestens eines vonmonth
odermonthCode
muss angegeben werden. Wenn sowohlmonth
als auchmonthCode
angegeben sind, müssen sie konsistent sein. year
-
Entspricht der
year
-Eigenschaft. Mindestens eines voneraYear
(zusammen mitera
) oderyear
muss angegeben werden. Wenn alleera
,eraYear
undyear
angegeben sind, müssen sie konsistent sein.
Die Informationen sollten explizit ein Jahr (als
year
oderera
underaYear
), einen Monat (alsmonth
odermonthCode
) und einen Tag spezifizieren.
-
options
Optional-
Ein Objekt mit der folgenden Eigenschaft:
overflow
Optional-
Ein String, der das Verhalten angibt, wenn eine Datumskomponente außerhalb des zulässigen Bereichs liegt (bei Verwendung des Objekts
info
). Mögliche Werte sind:"constrain"
(Standard)-
Die Datumskomponente wird auf den gültigen Bereich beschränkt.
"reject"
-
Es wird ein
RangeError
ausgelöst, wenn die Datumskomponente außerhalb des Bereichs liegt.
Rückgabewert
Ein neues Temporal.PlainDate
-Objekt, das das durch info
im angegebenen calendar
definierte Datum darstellt.
Ausnahmen
TypeError
-
Ausgelöst in einem der folgenden Fälle:
info
ist kein Objekt oder String.options
ist kein Objekt oderundefined
.- Die bereitgestellten Eigenschaften sind nicht ausreichend, um ein Datum eindeutig zu bestimmen. Normalerweise müssen Sie ein
year
(oderera
underaYear
), einenmonth
(odermonthCode
) und einenday
angeben.
RangeError
-
Ausgelöst in einem der folgenden Fälle:
- Die bereitgestellten Eigenschaften, die dieselbe Komponente spezifizieren, sind inkonsistent.
- Die bereitgestellten nicht-numerischen Eigenschaften sind ungültig; zum Beispiel, wenn
monthCode
niemals ein gültiger Monatscode in diesem Kalender ist. - Die bereitgestellten numerischen Eigenschaften sind außerhalb des Bereichs, und
options.overflow
ist auf"reject"
gesetzt. - Die Informationen liegen nicht im darstellbaren Bereich, der ±(108 + 1) Tage oder etwa ±273.972,6 Jahre ab dem Unix-Epoch umfasst.
Beispiele
Erstellen eines PlainDate aus einem Objekt
// Year, month, and day
const d1 = Temporal.PlainDate.from({ year: 2021, month: 7, day: 1 });
console.log(d1.toString()); // "2021-07-01"
// Year, month code, and day
const d2 = Temporal.PlainDate.from({ year: 2021, monthCode: "M07", day: 1 });
console.log(d2.toString()); // "2021-07-01"
// Year, month, day in a different calendar
const d3 = Temporal.PlainDate.from({
year: 2021,
month: 7,
day: 1,
calendar: "chinese",
});
// Note: when you construct a date with an object, the date components
// are in *that* calendar, not the ISO calendar. However, toString() always
// outputs the date in the ISO calendar. For example, the year "2021" in
// the Chinese calendar is actually 616 BC in the ISO calendar.
console.log(d3.toString()); // "-000616-08-12[u-ca=chinese]"
// Era, eraYear, month, and day
const d4 = Temporal.PlainDate.from({
era: "meiji",
eraYear: 4,
month: 7,
day: 1,
calendar: "japanese",
});
console.log(d4.toString()); // "1871-07-01[u-ca=japanese]"
Steuerung des Überlaufverhaltens
Standardmäßig werden Werte außerhalb des zulässigen Bereichs auf den gültigen Bereich beschränkt:
const d1 = Temporal.PlainDate.from({ year: 2021, month: 13, day: 1 });
console.log(d1.toString()); // "2021-12-01"
const d2 = Temporal.PlainDate.from({ year: 2021, month: 2, day: 29 });
console.log(d2.toString()); // "2021-02-28"
const d3 = Temporal.PlainDate.from("2021-02-29");
console.log(d3.toString()); // "2021-02-28"
Sie können dieses Verhalten ändern, sodass stattdessen ein Fehler ausgelöst wird:
const d3 = Temporal.PlainDate.from(
{ year: 2021, month: 13, day: 1 },
{ overflow: "reject" },
);
// RangeError: date value "month" not in 1..12: 13
Erstellen eines PlainDate aus einem String
const d = Temporal.PlainDate.from("2021-07-01");
console.log(d.toLocaleString("en-US", { dateStyle: "full" }));
// Thursday, July 1, 2021
// Providing a calendar
const d2 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
console.log(
d2.toLocaleString("ja-JP", { calendar: "japanese", dateStyle: "full" }),
);
// 令和3年7月1日木曜日
// Providing a time and an offset (ignored)
const d3 = Temporal.PlainDate.from("2021-07-01T00:00+08:00");
console.log(d3.toString()); // "2021-07-01"
Erstellen eines PlainDate aus einer anderen Temporal-Instanz
const dt = Temporal.PlainDateTime.from("2021-07-01T12:00");
const d = Temporal.PlainDate.from(dt);
console.log(d.toString()); // "2021-07-01"
const zdt = Temporal.ZonedDateTime.from(
"2021-07-01T00:00+08:00[Asia/Shanghai]",
);
const d2 = Temporal.PlainDate.from(zdt);
console.log(d2.toString()); // "2021-07-01"
const d3 = Temporal.PlainDate.from(d);
console.log(d3.toString()); // "2021-07-01"
Spezifikationen
Specification |
---|
Temporal # sec-temporal.plaindate.from |