Temporal.PlainDateTime.prototype.since()
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 since()
-Methode von Temporal.PlainDateTime
-Instanzen gibt ein neues Temporal.Duration
-Objekt zurück, das die Dauer von einem anderen Datum-Uhrzeit (in einer Form, die durch Temporal.PlainDateTime.from()
konvertierbar ist) zu diesem Datum-Uhrzeit darstellt. Die Dauer ist positiv, wenn das andere Datum-Uhrzeit vor diesem Datum-Uhrzeit liegt, und negativ, wenn es danach liegt.
Diese Methode führt this - other
aus. Um other - this
auszuführen, verwenden Sie die until()
-Methode.
Syntax
since(other)
since(other, options)
Parameter
other
-
Ein String, ein Objekt oder eine
Temporal.PlainDateTime
-Instanz, die ein Datum-Uhrzeit darstellt, das von diesem Datum-Uhrzeit abgezogen werden soll. Es wird mithilfe des gleichen Algorithmus wieTemporal.PlainDateTime.from()
in einTemporal.PlainDateTime
-Objekt konvertiert. Es muss denselben Kalender wiethis
haben. options
Optional-
Ein Objekt, das die Optionen für
Temporal.Duration.prototype.round()
enthält, einschließlichlargestUnit
,roundingIncrement
,roundingMode
undsmallestUnit
.largestUnit
undsmallestUnit
akzeptieren alle möglichen Einheiten. FürlargestUnit
bedeutet der Standardwert"auto"
"days"
odersmallestUnit
, je nachdem, was größer ist. FürsmallestUnit
ist der Standardwert"nanoseconds"
. Das aktuelle Datum wird alsrelativeTo
-Option verwendet. Beachten Sie, dass die Verwendung von Einheiten größer als"days"
die Dauer möglicherweise nicht auf andere Kalender oder Daten übertragbar macht.
Rückgabewert
Ein neues Temporal.Duration
-Objekt, das die Dauer seit other
bis zu diesem Datum-Uhrzeit darstellt. Die Dauer ist positiv, wenn other
vor diesem Datum-Uhrzeit liegt, und negativ, wenn es danach liegt.
Ausnahmen
RangeError
-
Wird in einem der folgenden Fälle ausgelöst:
other
hat einen anderen Kalender alsthis
.- Eine der Optionen ist ungültig.
Beispiele
Verwendung von 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"
Runden des Ergebnisses
Standardmäßig wird der Bruchteil des smallestUnit
abgeschnitten. Sie können es mit den Optionen roundingIncrement
und roundingMode
aufrunden.
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"
Spezifikationen
Specification |
---|
Temporal # sec-temporal.plaindatetime.prototype.since |