Temporal.PlainYearMonth : 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.PlainYearMonth retourne un nouvel objet Temporal.Duration représentant la durée entre une autre valeur de mois et son année (sous une forme convertible par Temporal.PlainYearMonth.from()) et ce mois avec son année. La durée est positive si l'autre mois est avant ce mois, et négative s'il 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.PlainYearMonthreprésentant le mois et l'année à soustraire de ce mois et son année. Il est converti en un objetTemporal.PlainYearMonthen utilisant le même algorithme queTemporal.PlainYearMonth.from(). Il 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", ou leurs formes singulières. PourlargestUnit, la valeur par défaut"auto"signifie"years". PoursmallestUnit, la valeur par défaut est"months". La date actuelle est utilisée comme optionrelativeTo.
Valeur de retour
Un nouvel objet Temporal.Duration représentant la durée depuis other jusqu'à ce mois et cette année. La durée est positive si other est avant ce mois et cette année, et négative si 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 lastUpdated = Temporal.PlainYearMonth.from("2022-01");
const now = Temporal.Now.plainDateISO().toPlainYearMonth();
const duration = now.since(lastUpdated);
console.log(`Dernière mise à jour il y a ${duration.toLocaleString("en-US")}`);
// Sortie attendue : "Dernière mise à jour il y a [number] années, [number] mois"
const duration2 = now.since(lastUpdated, { largestUnit: "months" });
console.log(`Dernière mise à jour il y a ${duration2.toLocaleString("en-US")}`);
// Sortie attendue : "Dernière mise à jour il y a [number] mois"
const duration3 = now.since(lastUpdated, { smallestUnit: "years" });
console.log(`Dernière mise à jour il y a ${duration3.toLocaleString("en-US")}`);
// Sortie attendue : "Dernière mise à jour il y a [number] années"
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 ym1 = Temporal.PlainYearMonth.from("2022-01");
const ym2 = Temporal.PlainYearMonth.from("2022-11");
const duration = ym2.since(ym1, {
smallestUnit: "years",
roundingMode: "ceil",
});
console.log(duration.toString()); // "P1Y"
Obtenir le résultat en jours
Par défaut, la durée résultante ne contient jamais de jours, car PlainYearMonth n'offre pas de précision au niveau des jours. Vous pouvez obtenir le résultat en jours en le convertissant d'abord en un Temporal.PlainDate avec un jour qui n'est pas ambigu.
const ym1 = Temporal.PlainYearMonth.from("2022-01");
const ym2 = Temporal.PlainYearMonth.from("2022-11");
const duration = ym2.toPlainDate({ day: 1 }).since(ym1.toPlainDate({ day: 1 }));
console.log(duration.toString()); // "P304D"
Spécifications
| Spécification |
|---|
| Temporal> # sec-temporal.plainyearmonth.prototype.since> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Temporal.PlainYearMonth - L'objet
Temporal.Duration - La méthode
Temporal.PlainYearMonth.prototype.add() - La méthode
Temporal.PlainYearMonth.prototype.subtract() - La méthode
Temporal.PlainYearMonth.prototype.until()