Temporal.PlainDate.prototype.since()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Phương thức since() của các instance Temporal.PlainDate trả về một đối tượng Temporal.Duration mới biểu diễn khoảng thời gian từ một ngày khác (ở dạng có thể chuyển đổi bởi Temporal.PlainDate.from()) đến ngày này. Khoảng thời gian là dương nếu ngày kia trước ngày này, và âm nếu sau.
Phương thức này thực hiện this - other. Để thực hiện other - this, sử dụng phương thức until().
Cú pháp
since(other)
since(other, options)
Tham số
other-
Một chuỗi, đối tượng, hoặc instance
Temporal.PlainDatebiểu diễn một ngày để trừ từ ngày này. Nó được chuyển đổi thành đối tượngTemporal.PlainDatebằng cùng thuật toán nhưTemporal.PlainDate.from(). Phải có cùng lịch vớithis. optionsOptional-
Một đối tượng chứa các tùy chọn cho
Temporal.Duration.prototype.round(), bao gồmlargestUnit,roundingIncrement,roundingMode, vàsmallestUnit.largestUnitvàsmallestUnitchỉ chấp nhận các đơn vị:"years","months","weeks","days", hoặc dạng số ít của chúng. Đối vớilargestUnit, giá trị mặc định"auto"có nghĩa là"days"hoặcsmallestUnit, tùy cái nào lớn hơn. Đối vớismallestUnit, giá trị mặc định là"days". Ngày hiện tại được dùng làm tùy chọnrelativeTo. Lưu ý rằng việc sử dụng các đơn vị lớn hơn"days"có thể làm cho khoảng thời gian không thể chuyển đổi sang các lịch hoặc ngày khác.
Giá trị trả về
Một đối tượng Temporal.Duration mới biểu diễn khoảng thời gian kể từ other đến ngày này. Khoảng thời gian là dương nếu other trước ngày này, và âm nếu sau.
Ngoại lệ
RangeError-
Được ném ra trong một trong các trường hợp sau:
othercó lịch khác vớithis.- Bất kỳ tùy chọn nào không hợp lệ.
Ví dụ
>Sử dụng since()
const date = Temporal.PlainDate.from("2022-12-25");
const now = Temporal.Now.plainDateISO();
const duration = now.since(date);
const formatter = new Intl.DurationFormat("en-US", { style: "long" });
console.log(`It's been ${formatter.format(duration)} since that Christmas...`);
// Đầu ra dự kiến: "It's been [number] days since that Christmas..."
const duration2 = now.since(date, { smallestUnit: "months" });
console.log(`It's been ${formatter.format(duration2)} since that Christmas...`);
// Đầu ra dự kiến: "It's been [number] months since that Christmas..."
const duration3 = now.since(date, {
largestUnit: "years",
smallestUnit: "months",
});
console.log(`It's been ${formatter.format(duration3)} since that Christmas...`);
// Đầu ra dự kiến: "It's been [number] years, [number] months since that Christmas..."
Làm tròn kết quả
Theo mặc định phần thập phân của smallestUnit bị cắt bỏ. Bạn có thể làm tròn lên bằng các tùy chọn roundingIncrement và roundingMode.
const date1 = Temporal.PlainDate.from("2022-01-01");
const date2 = Temporal.PlainDate.from("2022-01-28");
const duration = date2.since(date1, {
smallestUnit: "days",
roundingIncrement: 5,
roundingMode: "ceil",
});
console.log(duration.toString()); // "P30D"
So sánh các lịch khác nhau
Theo mặc định, hai ngày phải có cùng lịch. Điều này để tránh mơ hồ trong ý nghĩa của tháng và năm. Nếu bạn muốn so sánh ngày từ các lịch khác nhau, bạn có thể chuyển đổi chúng về cùng lịch trước.
const date1 = Temporal.PlainDate.from("2022-01-01");
const date2 = Temporal.PlainDate.from("2022-01-28[u-ca=chinese]");
const duration = date2.withCalendar("iso8601").since(date1);
console.log(duration.toString()); // "P27D"
Đặc tả
| Specification |
|---|
| Temporal> # sec-temporal.plaindate.prototype.since> |