Temporal.PlainDate : méthode since()
Disponibilité limitée
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
La méthode since() des instances de Temporal.PlainDate retourne un nouvel objet Temporal.Duration représentant la durée entre une autre date (sous une forme convertible par Temporal.PlainDate.from()) et cette date. La durée est positive si l'autre date est avant cette date, et négative si elle est après.
Cette méthode effectue this - other. Pour effectuer other - this, utilisez la méthode until().
Syntaxe
since(other)
since(other, options)
Paramètres
other-
Une chaîne de caractères, un objet ou une instance de
Temporal.PlainDatereprésentant une date à soustraire de cette date. Elle est convertie en un objetTemporal.PlainDateen utilisant le même algorithme queTemporal.PlainDate.from(). Elle doit avoir le même calendrier quethis. optionsFacultatif-
Un objet contenant les options pour
Temporal.Duration.prototype.round(), qui inclutlargestUnit,roundingIncrement,roundingModeetsmallestUnit.largestUnitetsmallestUnitn'acceptent que les unités :"years","months","weeks","days", ou leurs formes singulières. PourlargestUnit, la valeur par défaut"auto"signifie"days"ousmallestUnit, selon la plus grande. PoursmallestUnit, la valeur par défaut est"days". La date actuelle est utilisée comme optionrelativeTo. Notez que l'utilisation d'unités supérieures à"days"peut rendre la durée non portable vers d'autres calendriers ou dates.
Valeur de retour
Un nouvel objet Temporal.Duration représentant la durée depuis other jusqu'à cette date. La durée est positive si other est avant cette date, et négative si elle est après.
Exceptions
RangeError-
Levée dans l'un des cas suivants :
othera un calendrier différent dethis.- L'une des options est invalide.
Exemples
>Utiliser la méthode 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(`Cela fait ${formatter.format(duration)} depuis ce Noël...`);
// Sortie attendue : "Cela fait [number] jours depuis ce Noël..."
const duration2 = now.since(date, { smallestUnit: "months" });
console.log(`Cela fait ${formatter.format(duration2)} depuis ce Noël...`);
// Sortie attendue : "Cela fait [number] mois depuis ce Noël..."
const duration3 = now.since(date, {
largestUnit: "years",
smallestUnit: "months",
});
console.log(`Cela fait ${formatter.format(duration3)} depuis ce Noël...`);
// Sortie attendue : "Cela fait [number] années, [number] mois depuis ce Noël..."
Arrondir le résultat
Par défaut, la partie fractionnaire de smallestUnit est tronquée. Vous pouvez l'arrondir en utilisant les options roundingIncrement et 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"
Comparer différents calendriers
Par défaut, les deux dates doivent avoir le même calendrier. Cela permet d'éviter toute ambiguïté dans la signification des mois et des années. Si vous souhaitez comparer des dates provenant de calendriers différents, vous pouvez d'abord les convertir dans le même calendrier.
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"
Spécifications
| Spécification |
|---|
| Temporal> # sec-temporal.plaindate.prototype.since> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Temporal.PlainDate - L'objet
Temporal.Duration - La méthode
Temporal.PlainDate.prototype.add() - La méthode
Temporal.PlainDate.prototype.subtract() - La méthode
Temporal.PlainDate.prototype.until()