Temporal.PlainDateTime.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.PlainDateTime trả về một đối tượng Temporal.Duration mới đại diện cho khoảng thời gian từ một ngày-giờ khác (ở dạng có thể chuyển đổi bởi Temporal.PlainDateTime.from()) đến ngày-giờ này. Khoảng thời gian là dương nếu ngày-giờ kia đứng trước ngày-giờ này, và âm nếu đứng sau.
Phương thức này thực hiện this - other. Để thực hiện other - this, hãy sử dụng phương thức until().
Cú pháp
since(other)
since(other, options)
Tham số
other-
Một chuỗi, một đối tượng, hoặc một instance
Temporal.PlainDateTimeđại diện cho một ngày-giờ cần trừ khỏi ngày-giờ này. Nó được chuyển đổi thành đối tượngTemporal.PlainDateTimebằng thuật toán tương tự nhưTemporal.PlainDateTime.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ấp nhận tất cả các đơn vị có thể. Đối vớilargestUnit, giá trị mặc định"auto"có nghĩa là"days"hoặcsmallestUnit, tùy giá trị nào lớn hơn. Đối vớismallestUnit, giá trị mặc định là"nanoseconds". Ngày hiện tại được sử 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ể khiến khoảng thời gian không thể chuyển đổi được sang các lịch hoặc ngày khác.
Giá trị trả về
Một đối tượng Temporal.Duration mới đại diện cho khoảng thời gian kể từ other đến ngày-giờ này. Khoảng thời gian là dương nếu other đứng trước ngày-giờ này, và âm nếu đứng 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()
let lastBilling = Temporal.PlainDateTime.from({
year: Temporal.Now.plainDateISO().year,
month: 4,
day: 1,
});
const now = Temporal.Now.plainDateTimeISO().round("second");
if (Temporal.PlainDateTime.compare(lastBilling, now) > 0) {
lastBilling = lastBilling.subtract({ years: 1 });
}
const duration = now.since(lastBilling);
console.log(`${duration.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] days, [number] hr, [number] min, [number] sec since last billing"
const duration2 = now.since(lastBilling, { smallestUnit: "days" });
console.log(`${duration2.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] days since last billing"
const duration3 = now.since(lastBilling, {
largestUnit: "years",
smallestUnit: "days",
});
console.log(`${duration3.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] months, [number] days since last billing"
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ách sử dụng các tùy chọn roundingIncrement và roundingMode.
const dt1 = Temporal.PlainDateTime.from("2022-01-01T00:00:00");
const dt2 = Temporal.PlainDateTime.from("2022-01-28T12:34:56");
const duration = dt2.since(dt1, {
smallestUnit: "days",
roundingIncrement: 5,
roundingMode: "ceil",
});
console.log(duration.toString()); // "P30D"
Đặc tả
| Specification |
|---|
| Temporal> # sec-temporal.plaindatetime.prototype.since> |