Temporal.PlainDate.from()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Phương thức tĩnh Temporal.PlainDate.from() tạo một đối tượng Temporal.PlainDate mới từ đối tượng Temporal.PlainDate khác, đối tượng có thuộc tính ngày, hoặc chuỗi RFC 9557.
Cú pháp
Temporal.PlainDate.from(info)
Temporal.PlainDate.from(info, options)
Tham số
info-
Một trong các trường hợp sau:
-
Một instance
Temporal.PlainDate, tạo ra bản sao của instance đó. -
Một instance
Temporal.PlainDateTime, cung cấp ngày lịch theo cùng cách nhưTemporal.PlainDateTime.prototype.toPlainDate(). -
Một instance
Temporal.ZonedDateTime, cung cấp ngày lịch theo cùng cách nhưTemporal.ZonedDateTime.prototype.toPlainDate(). -
Một chuỗi RFC 9557 chứa ngày và tùy chọn một lịch.
-
Một đối tượng chứa các thuộc tính sau (theo thứ tự chúng được lấy và xác nhận):
calendarOptional-
Một chuỗi tương ứng với thuộc tính
calendarId. XemIntl.supportedValuesOf()để biết danh sách các loại lịch thường được hỗ trợ. Mặc định là"iso8601". Tất cả các thuộc tính khác được diễn giải trong hệ thống lịch này (không giống như constructorTemporal.PlainDate(), diễn giải các giá trị trong hệ thống lịch ISO). day-
Một số nguyên tương ứng với thuộc tính
day. Phải là dương bất kể tùy chọnoverflow. eravàeraYear-
Một chuỗi và một số nguyên tương ứng với các thuộc tính
eravàeraYear. Chỉ được sử dụng nếu hệ thống lịch có kỷ nguyên.eravàeraYearphải được cung cấp đồng thời. Ít nhất một trongeraYear(cùng vớiera) hoặcyearphải được cung cấp. Nếu tất cảera,eraYearvàyearđều được cung cấp, chúng phải nhất quán. month-
Tương ứng với thuộc tính
month. Phải là dương bất kể tùy chọnoverflow. Ít nhất một trongmonthhoặcmonthCodephải được cung cấp. Nếu cảmonthvàmonthCodeđều được cung cấp, chúng phải nhất quán. monthCode-
Tương ứng với thuộc tính
monthCode. Ít nhất một trongmonthhoặcmonthCodephải được cung cấp. Nếu cảmonthvàmonthCodeđều được cung cấp, chúng phải nhất quán. year-
Tương ứng với thuộc tính
year. Ít nhất một trongeraYear(cùng vớiera) hoặcyearphải được cung cấp. Nếu tất cảera,eraYearvàyearđều được cung cấp, chúng phải nhất quán.
Thông tin phải chỉ định rõ ràng năm (dưới dạng
yearhoặceravàeraYear), tháng (dưới dạngmonthhoặcmonthCode) và ngày.
-
optionsOptional-
Một đối tượng chứa thuộc tính sau:
overflowOptional-
Một chuỗi chỉ định hành vi khi thành phần ngày nằm ngoài phạm vi (khi sử dụng đối tượng
info). Các giá trị có thể là:"constrain"(mặc định)-
Thành phần ngày được kẹp vào phạm vi hợp lệ.
"reject"-
RangeErrorđược ném ra nếu thành phần ngày nằm ngoài phạm vi.
Giá trị trả về
Một đối tượng Temporal.PlainDate mới, đại diện cho ngày được xác định bởi info trong calendar được chỉ định.
Ngoại lệ
TypeError-
Ném ra trong một trong các trường hợp sau:
infokhông phải là đối tượng hoặc chuỗi.optionskhông phải là đối tượng hoặcundefined.- Các thuộc tính được cung cấp không đủ để xác định rõ ràng một ngày. Bạn thường cần cung cấp
year(hoặceravàeraYear),month(hoặcmonthCode) vàday.
RangeError-
Ném ra trong một trong các trường hợp sau:
- Các thuộc tính được cung cấp chỉ định cùng thành phần không nhất quán.
- Các thuộc tính không phải số được cung cấp không hợp lệ; ví dụ, nếu
monthCodekhông bao giờ là mã tháng hợp lệ trong lịch này. - Các thuộc tính số được cung cấp nằm ngoài phạm vi, và
options.overflowđược đặt thành"reject". - Thông tin không nằm trong phạm vi có thể biểu diễn, là ±(108 + 1) ngày, tức khoảng ±273.972,6 năm, từ Unix epoch.
Ví dụ
>Tạo PlainDate từ đối tượng
// Năm, tháng và ngày
const d1 = Temporal.PlainDate.from({ year: 2021, month: 7, day: 1 });
console.log(d1.toString()); // "2021-07-01"
// Năm, mã tháng và ngày
const d2 = Temporal.PlainDate.from({ year: 2021, monthCode: "M07", day: 1 });
console.log(d2.toString()); // "2021-07-01"
// Năm, tháng, ngày trong lịch khác
const d3 = Temporal.PlainDate.from({
year: 2021,
month: 7,
day: 1,
calendar: "hebrew",
});
// Lưu ý: khi bạn xây dựng ngày với đối tượng, các thành phần ngày
// theo *lịch đó*, không phải lịch ISO. Tuy nhiên, toString() luôn
// xuất ngày theo lịch ISO. Ví dụ, năm "2021" trong
// lịch Hebrew thực tế là 1740 TCN theo lịch ISO.
console.log(d3.toString()); // "-001739-03-07[u-ca=hebrew]"
// Kỷ nguyên, năm kỷ nguyên, tháng và ngày
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]"
Kiểm soát hành vi tràn số
Theo mặc định, các giá trị ngoài phạm vi được kẹp vào phạm vi hợp lệ:
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"
Bạn có thể thay đổi hành vi này để ném lỗi thay thế:
const d3 = Temporal.PlainDate.from(
{ year: 2021, month: 13, day: 1 },
{ overflow: "reject" },
);
// RangeError: date value "month" not in 1..12: 13
Tạo PlainDate từ chuỗi
const d = Temporal.PlainDate.from("2021-07-01");
console.log(d.toLocaleString("en-US", { dateStyle: "full" }));
// Thursday, July 1, 2021
// Cung cấp lịch
const d2 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
console.log(
d2.toLocaleString("ja-JP", { calendar: "japanese", dateStyle: "full" }),
);
// 令和3年7月1日木曜日
// Cung cấp giờ và độ lệch (bị bỏ qua)
const d3 = Temporal.PlainDate.from("2021-07-01T00:00+08:00");
console.log(d3.toString()); // "2021-07-01"
Tạo PlainDate từ instance Temporal khác
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"
Đặc tả
| Specification |
|---|
| Temporal> # sec-temporal.plaindate.from> |