Temporal.ZonedDateTime
Disponibilité limitée
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
L'objet Temporal.ZonedDateTime représente une date et une heure avec un fuseau horaire. Il est fondamentalement représenté comme une combinaison d'un instant, d'un fuseau horaire et d'un système de calendrier.
Description
Un ZonedDateTime fonctionne comme un pont entre un temps exact et un temps affiché sur une horloge murale : il représente simultanément un instant dans l'histoire (comme un Temporal.Instant) et un temps local affiché sur une horloge (comme un Temporal.PlainDateTime). Il le fait en stockant l'instant, le fuseau horaire et le système de calendrier. Le fuseau horaire est utilisé pour convertir entre l'instant et le temps local, et le système de calendrier est utilisé pour interpréter le temps local.
ZonedDateTime est la seule classe Temporal qui prend en compte le fuseau horaire. L'ajout d'un fuseau horaire fait que les objets ZonedDateTime ont des différences de comportement importantes par rapport aux objets Temporal.PlainDateTime. Notamment, vous ne pouvez plus supposer que « l'heure 1 minute plus tard » est la même chaque jour, ou qu'une journée compte 24 heures. Dans le pire des cas, une journée entière peut manquer dans le calendrier local. Ci-dessous, nous proposons un aperçu rapide des fuseaux horaires et des décalages, et de la façon dont ils affectent la conversion entre l'heure UTC et l'heure locale.
Fuseaux horaires et décalages
Toutes les heures en JavaScript ont une norme d'or : l'heure UTC, qui s'incrémente de manière continue et uniforme à mesure que le temps physique progresse. En revanche, les utilisateur·ice·s s'intéressent davantage à leur heure locale, qui est l'heure qu'ils lisent sur leurs calendriers et horloges. Le processus de conversion entre l'heure UTC et l'heure locale implique un décalage de fuseau horaire, qui est calculé comme suit :
heure locale = heure UTC + décalage
Par exemple, si l'heure UTC est 1970-01-01T00:00:00 et que le décalage est « -05:00 », alors l'heure locale est :
1970-01-01T00:00:00 + -05:00 = 1969-12-31T19:00:00
En ajoutant un suffixe à cette heure locale avec le décalage, et donc en exprimant cette heure comme « 1969-12-31T19:00:00-05:00 », elle peut maintenant être comprise sans ambiguïté comme un instant dans l'histoire.
Pour connaître le décalage, nous avons besoin de deux informations, le fuseau horaire et l'instant. Le fuseau horaire est une région sur Terre où le même décalage est utilisé à tout moment. Deux horloges dans le même fuseau horaire afficheront toujours la même heure simultanément, mais le décalage n'est pas nécessairement constant : c'est-à-dire que l'heure de ces horloges peut changer brusquement. Cela se produit couramment lors des transitions d'heure d'été, où le décalage change d'une heure, ce qui arrive deux fois par an. Les décalages peuvent aussi changer définitivement en raison de changements politiques, par exemple, un pays changeant de fuseau horaire.
Les fuseaux horaires sont stockés dans la base de données des fuseaux horaires IANA (angl.). Chaque fuseau horaire IANA possède :
- Un identifiant principal de fuseau horaire qui identifie de manière unique le fuseau horaire. Il fait généralement référence à une zone géographique ancrée par une ville (par exemple,
Europe/ParisouAfrica/Kampala), mais peut aussi désigner des fuseaux horaires à décalage unique commeUTC(un décalage constant de+00:00) ouEtc/GMT+5(qui, pour des raisons historiques, est un décalage négatif de-05:00). Pour des raisons historiques, le nom principal du fuseau horaire UTC estUTC, bien que dans l'IANA ce soitEtc/UTC. - Une définition de fuseau horaire sous la forme d'un tableau qui associe des plages de dates/heures UTC (y compris des plages futures) à des décalages spécifiques.
- Zéro ou plusieurs identificateurs de fuseau horaire qui ne sont pas principaux qui sont des alias de l'identifiant principal du fuseau horaire. Il s'agit généralement de noms historiques qui ne sont plus utilisés, mais qui sont conservés pour des raisons de compatibilité. Voir ci-dessous pour plus d'informations.
Lors de la saisie, la correspondance des identifiants nommés s'effectue sans distinction de casse. En interne, ils sont stockés dans leur casse préférée, et les identifiants non principaux ne seront pas convertis en leur identifiant principal.
Note :
Lorsque vous définissez le nom du fuseau horaire, vous ne souhaitez généralement pas le définir sur "UTC". ZonedDateTime est destinée à être affichée aux utilisateur·ice·s, mais aucun·e humain·e ne vit dans le fuseau horaire « UTC ». Si vous ne connaissez pas le fuseau horaire au moment de la construction mais que vous connaissez l'heure affichée, utilisez un Temporal.PlainDateTime. Si vous connaissez l'instant exact, utilisez un Temporal.Instant.
Lorsqu'une API Temporal accepte un identifiant de fuseau horaire, en plus des identifiants principaux de fuseau horaire et des identifiants de fuseau horaire qui ne sont pas principaux, elle accepte également un identifiant de fuseau horaire à décalage, qui est sous la même forme que le décalage, sauf que la précision subminute n'est pas autorisée. Par exemple, +05:30, -08, +0600 sont tous des identifiants de décalage valides. En interne, les identifiants de décalage sont stockés sous la forme ±HH:mm.
Note : Évitez d'utiliser des identifiants de décalage si vous pouvez utiliser un fuseau horaire nommé à la place. Même si une région a toujours utilisé un seul décalage, il est préférable d'utiliser l'identifiant nommé pour se prémunir contre les futurs changements politiques du décalage.
Si une région utilise (ou a utilisé) plusieurs décalages, alors l'utilisation de son fuseau horaire nommé est encore plus importante. En effet, Temporal.ZonedDateTime peut utiliser des méthodes comme add ou with pour créer de nouvelles instances à un instant différent. Si ces instances dérivées correspondent à un instant qui utilise un décalage différent (par exemple, après une transition de l'heure d'été), alors vos calculs auront une heure locale incorrecte. L'utilisation d'un fuseau horaire nommé garantit que les dates et heures locales sont toujours ajustées pour le décalage correct à cet instant.
Pour plus de commodité, lorsque vous fournissez un identifiant de fuseau horaire aux API Temporal telles que Temporal.ZonedDateTime.prototype.withTimeZone() et l'option timeZoneId de Temporal.ZonedDateTime.from(), vous pouvez le fournir sous quelques autres formes :
- Comme une autre instance de
ZonedDateTime, dont letimeZoneIdsera utilisé. - Comme une chaîne de caractères RFC 9557 avec une annotation de fuseau horaire, dont l'identifiant de fuseau horaire sera utilisé.
- Comme une chaîne de caractères ISO 8601 / RFC 3339 contenant un décalage, dont le décalage sera utilisé comme identifiant de décalage ; ou, si vous utilisez
Z, alors le fuseau horaire"UTC"est utilisé. Cette utilisation est généralement déconseillée, car comme expliqué ci-dessus, les identifiants de décalage n'offrent pas la possibilité de produire en toute sécurité d'autres instances deTemporal.ZonedDateTimelors d'une transition de décalage comme lorsque l'heure d'été commence ou se termine. À la place, envisagez simplement d'utiliserTemporal.Instantou d'obtenir le nom de fuseau horaire réel de l'utilisateur·ice.
La base de données des fuseaux horaires IANA change de temps en temps, généralement pour ajouter de nouveaux fuseaux horaires en réponse à des changements politiques. Cependant, dans de rares occasions, les identifiants de fuseau horaire IANA sont renommés pour correspondre à la traduction anglaise mise à jour d'un nom de ville ou pour mettre à jour des conventions de nommage obsolètes. Par exemple, voici quelques changements de nom notables :
| Identifiant IANA principal actuel | Ancien identifiant, qui n'est plus principal |
|---|---|
America/Argentina/Buenos_Aires |
America/Buenos_Aires |
Asia/Kolkata |
Asia/Calcutta |
Asia/Ho_Chi_Minh |
Asia/Saigon |
Europe/Kyiv |
Europe/Kiev |
Historiquement, ces changements de noms ont causé des problèmes pour les programmeur·euse·s, car la base de données Unicode CLDR (angl.) (une bibliothèque utilisée par les navigateurs pour fournir des identifiants et des données de fuseau horaire) ne suivait pas les renommages de l'IANA pour des raisons de stabilité (angl.). En conséquence, certains navigateurs comme Chrome et Safari ont signalé des identifiants obsolètes de la CLDR, tandis que d'autres navigateurs comme Firefox ont remplacé les valeurs par défaut de la CLDR et ont signalé les identifiants principaux à jour.
Avec l'introduction de Temporal, ce comportement est désormais davantage standardisé :
- Les données CLDR (angl.) incluent désormais un attribut
"_iana"qui indique l'identifiant le plus à jour si l'ancien identifiant stable a été renommé. Les navigateurs peuvent utiliser ce nouvel attribut pour fournir des identifiants à jour aux appelant·e·s. - Les identifiants de fuseau horaire fournis par le·la programmeur·euse ne seront jamais remplacés par un alias. Par exemple, si l'appelant·e fournit
Asia/CalcuttaouAsia/Kolkatacomme identifiant àTemporal.ZonedDateTime.from(), alors le même identifiant est retourné dans l'instance résultantetimeZoneId. Notez que la casse des sorties est normalisée pour correspondre à l'IANA, doncASIA/calCuTTaen entrée génère untimeZoneIddeAsia/Calcuttaen sortie. - Lorsque l'identifiant de fuseau horaire n'est pas fourni par l'appelant·e mais provient du système lui-même (par exemple, lors de l'utilisation de
Temporal.Now.timeZoneId()), les identifiants modernes sont retournés dans tous les navigateurs. Pour les changements de nom de ville, il y a un délai de deux ans avant que ces API d'identifiant fourni par le système exposent le nouveau nom, laissant ainsi le temps aux autres composants (comme un serveur Node) de mettre à jour leurs copies de la base de données IANA pour reconnaître le nouveau nom.
On notera que l'attribution des identifiants principaux préserve le code pays : par exemple, la base de données IANA enregistre Atlantic/Reykjavik comme un alias pour Africa/Abidjan, mais comme ils correspondent à des pays différents (Islande et Côte d'Ivoire, respectivement), ils sont traités comme des identifiants principaux distincts.
Cette standardisation s'applique également en dehors de Temporal. Par exemple, l'option timeZone retournée par Intl.DateTimeFormat.prototype.resolvedOptions() n'est jamais remplacée par un alias, bien que les navigateurs aient traditionnellement canonisé ces identifiants avant la standardisation par Temporal. En revanche, Intl.Locale.prototype.getTimeZones() et Intl.supportedValuesOf() (option timeZone) retourneront l'identifiant le plus à jour, tandis que certains navigateurs retournaient auparavant l'ancien identifiant non principal.
Format RFC 9557
Les objets ZonedDateTime peuvent être sérialisés et analysés en utilisant le format RFC 9557 (angl.), une extension du format ISO 8601 / RFC 3339 (angl.). La chaîne de caractères a la forme suivante (les espaces ne sont là que pour la lisibilité et ne doivent pas être présents dans la chaîne de caractères réelle) :
YYYY-MM-DD T HH:mm:ss.sssssssss Z/±HH:mm [time_zone_id] [u-ca=calendar_id]
YYYY-
Soit un nombre à quatre chiffres, soit un nombre à six chiffres avec un signe
+ou-. MM-
Un nombre à deux chiffres de
01à12. DD-
Un nombre à deux chiffres de
01à31. Les composantsYYYY,MMetDDpeuvent être séparés par-ou rien. TFacultatif-
Un séparateur de date et d'heure, qui peut être
T,tou un espace. Présent si et seulement siHHest présent. HHFacultatif-
Un nombre à deux chiffres de
00à23. Par défaut00. mmFacultatif-
Un nombre à deux chiffres de
00à59. Par défaut00. ss.sssssssssFacultatif-
Un nombre à deux chiffres de
00à59. Peut être suivi optionnellement d'un.ou,et d'un à neuf chiffres. Par défaut00. Les composantsHH,mmetsspeuvent être séparés par:ou rien. Vous pouvez omettre soitssseul, soitssetmm, donc l'heure peut être sous trois formes :HH,HH:mmouHH:mm:ss.sssssssss. Z/±HH:mmFacultatif-
Soit le désignateur UTC
Zouz, soit un décalage par rapport à l'UTC sous la forme+ou-suivi du même format que le composant heure. Notez que la précision sous la minute (:ss.sssssssss) peut ne pas être prise en charge par d'autres systèmes, et est acceptée mais jamais produite. Si elle est omise, le décalage est dérivé de l'identifiant de fuseau horaire. Si elle est présente, l'heure doit également être fournie.Zn'est pas identique à+00:00: la première signifie que l'heure est donnée sous forme UTC indépendamment de l'identifiant de fuseau horaire, tandis que la seconde signifie que l'heure est donnée en heure locale qui se trouve être UTC+0, et sera validée par rapport à l'identifiant de fuseau horaire avec l'optionoffset. [time_zone_id]-
Remplacez
time_zone_idpar l'identifiant de fuseau horaire (nommé ou décalé) comme décrit ci-dessus. Peut avoir un drapeau critique en préfixant l'identifiant avec!: par exemple,[!America/New_York]. Ce drapeau indique généralement aux autres systèmes qu'il ne peut pas être ignoré s'ils ne le prennent pas en charge. Notez qu'il est requis pourTemporal.ZonedDateTime.from(): l'omission entraîne uneRangeError. Si vous souhaitez analyser des chaînes de caractères ISO 8601 / RFC 3339 sans annotations d'identifiant de fuseau horaire, utilisez plutôtTemporal.Instant.from(). [u-ca=calendar_id]Facultatif-
Remplacez
calendar_idpar le calendrier à utiliser. VoirIntl.supportedValuesOf()pour une liste des types de calendriers couramment pris en charge. Par défaut[u-ca=iso8601]. Peut avoir un drapeau critique en préfixant la clé avec!: par exemple,[!u-ca=iso8601]. Ce drapeau indique généralement aux autres systèmes qu'il ne peut pas être ignoré s'ils ne le prennent pas en charge. L'analyseurTemporallèvera une erreur si les annotations contiennent deux ou plusieurs annotations de calendrier et que l'une d'elles est critique. Notez que leYYYY-MM-DDest toujours interprété comme une date de calendrier ISO 8601 puis converti dans le calendrier défini.
En tant qu'entrée, les autres annotations au format [clé=valeur] sont ignorées, et elles ne doivent pas avoir le drapeau critique.
Lors de la sérialisation, vous pouvez configurer les chiffres fractionnaires des secondes, décider d'afficher le décalage/l'identifiant de fuseau horaire/l'identifiant de calendrier, et décider d'ajouter un drapeau critique pour les annotations.
Ambiguïté et écarts lors du passage de l'heure locale à l'UTC
Étant donné un fuseau horaire, la conversion de l'UTC vers l'heure locale est simple : vous obtenez d'abord le décalage en utilisant le nom du fuseau horaire et l'instant, puis vous ajoutez le décalage à l'instant. L'inverse n'est pas vrai : la conversion de l'heure locale vers l'UTC, sans décalage explicite, est ambiguë, car une heure locale peut correspondre à zéro, une ou plusieurs heures UTC. Considérez la cause la plus courante : les transitions d'heure d'été. Prenons New York comme exemple. Son décalage standard est UTC-5, mais pendant l'heure d'été, toutes les horloges sont avancées d'une heure, donc le décalage devient UTC-4. Aux États-Unis, les transitions ont lieu à 2h00 heure locale, donc considérez ces deux jours de transition :
| Heure UTC | Heure de New York |
|---|---|
| 2024-03-10T06:58:00Z | 2024-03-10T01:58:00-05:00 |
| 2024-03-10T06:59:00Z | 2024-03-10T01:59:00-05:00 |
| 2024-03-10T07:00:00Z | 2024-03-10T03:00:00-04:00 |
| --- | --- |
| 2024-11-03T05:58:00Z | 2024-11-03T01:58:00-04:00 |
| 2024-11-03T05:59:00Z | 2024-11-03T01:59:00-04:00 |
| 2024-11-03T06:00:00Z | 2024-11-03T01:00:00-05:00 |
Comme vous pouvez le voir, en mars, une heure a disparu de l'heure locale, et en novembre, nous avons deux heures qui ont la même heure affichée. Supposons que nous ayons stocké un PlainDateTime qui indique « 2024-03-10T02:05:00 », et que nous voulions l'interpréter dans le fuseau horaire America/New_York, il n'y aura aucune heure qui y correspond, tandis qu'un PlainDateTime qui indique « 2024-11-03T01:05:00 » peut correspondre à deux instants différents.
Lors de la construction d'un ZonedDateTime à partir d'une heure locale (en utilisant Temporal.ZonedDateTime.from(), Temporal.ZonedDateTime.prototype.with(), Temporal.PlainDateTime.prototype.toZonedDateTime()), le comportement pour l'ambiguïté et les écarts se configure avec l'option disambiguation :
earlier-
S'il y a deux instants possibles, choisir le plus tôt. S'il y a un écart, reculer de la durée de l'écart.
later-
S'il y a deux instants possibles, choisir le plus tard. S'il y a un écart, avancer de la durée de l'écart.
compatible(par défaut)-
Même comportement que
Date: utiliserlaterpour les écarts etearlierpour les ambiguïtés. reject-
Lever une
RangeErrorchaque fois qu'il y a une ambiguïté ou un écart.
Il existe plusieurs cas où il n'y a pas d'ambiguïté lors de la construction d'un ZonedDateTime :
- Si l'heure est définie en UTC en utilisant le décalage
Z. - Si le décalage est explicitement fourni et utilisé (voir ci-dessous).
Ambiguïté du décalage
Nous avons déjà montré comment l'interprétation d'une heure locale dans un fuseau horaire peut prêter à confusion si aucun décalage n'est explicitement indiqué. Cependant, si vous fournissez un décalage explicite, un autre conflit apparaît : celui entre le décalage tel qu'il est défini et celui calculé à partir du fuseau horaire et de l'heure locale. TIl s'agit d'un problème inévitable dans la réalité : si vous enregistrez une heure dans le futur, avec un décalage anticipé, il se peut que, d'ici là, la définition du fuseau horaire ait changé pour des raisons politiques. Par exemple, supposons qu'en 2018, nous ayons défini un rappel à l'heure 2019-12-23T12:00:00-02:00[America/Sao_Paulo] (qui correspond à l'heure d'été ; le Brésil se trouve dans l'hémisphère sud, il passe donc à l'heure d'été en octobre et en sort en février). Mais avant que ce moment n'arrive, début 2019, le Brésil décide de ne plus appliquer l'heure d'été, de sorte que le décalage réel devient -03:00. Le rappel doit-il désormais se déclencher à midi (en conservant l'heure locale), ou doit-il se déclencher à 11h (en conservant l'heure exacte) ?
Pour qu'une ambiguïté de décalage existe, une chaîne de caractères d'horodatage doit être analysée à l'aide de règles de la base de données des fuseaux horaires de l'IANA différentes de celles utilisées lors de la génération initiale de l'horodatage. Cela ne se produira jamais lorsque les horodatages sont générés au cours de la même exécution d'un programme JavaScript, car la spécification ECMAScript exige que les règles de la base de données des fuseaux horaires de l'IANA restent cohérentes pendant toute la durée de vie d'un programme JavaScript.
Cependant, une ambiguïté de décalage peut exister lorsqu'un programme JavaScript analyse des horodatages qui ont été stockés précédemment, comme dans l'exemple America/Sao_Paulo ci-dessus, et que la base de données des fuseaux horaires de l'IANA a été mise à jour depuis la génération initiale de l'horodatage. Cela peut également se produire lors de la communication d'horodatages entre ordinateurs (ou, rarement, entre différents logiciels sur le même ordinateur !) utilisant différentes versions de la base de données des fuseaux horaires de l'IANA. La base de données des fuseaux horaires de l'IANA dispose également d'options de compilation (par exemple, utiliser ou non les règles obsolètes dans backzone) qui peuvent provoquer une ambiguïté de décalage lors de la communication d'horodatages entre ordinateurs utilisant différents logiciels, même lorsque la version de la base de données des fuseaux horaires de l'IANA est la même.
Les ambiguïtés de décalage sont rares et ne concernent presque toujours que les horodatages antérieurs à 1970 ou ceux situés plusieurs mois ou années dans le futur. Toutefois, lorsque ce problème survient, une exception RangeError est levée par défaut. Lors de la création d'un objet ZonedDateTime à l'aide de Temporal.ZonedDateTime.from() ou lors de sa mise à jour à l'aide de la méthode with() vous pouvez éviter cette exception en utilisant l'option offset pour déterminer si l'offset ou l'identifiant de fuseau horaire « l'emporte » :
use-
Utilise le décalage pour calculer l'heure exacte. Cette option « utilise » le décalage pour déterminer l'instant auquel se réfère la chaîne de caractères de la date et de l'heure, même si le décalage à cet instant a changé. L'identifiant de fuseau horaire est toujours utilisé pour déduire le décalage (éventuellement mis à jour) et utiliser ce décalage pour convertir l'heure exacte en heure locale. Dans l'exemple
2019-12-23T12:00:00-02:00[America/Sao_Paulo]ci-dessus, cette option ferait en sorte que le rappel se déclenche à 11h, heure locale. ignore-
Utilise l'identifiant du fuseau horaire pour recalculer le décalage, en ignorant celui défini dans la chaîne de caractères. Cette option conserve l'heure locale telle qu'elle avait été calculée initialement lors de l'enregistrement de l'heure, mais peut aboutir à un instant différent. Notez qu'en ignorant le décalage, la même ambiguïté d'interprétation de l'heure locale peut se produire, ce qui est résolu en utilisant l'option
disambiguation. Dans l'exemple2019-12-23T12:00:00-02:00[America/Sao_Paulo]ci-dessus, cette option ferait en sorte que le rappel se déclenche à 12h, heure locale. reject-
Lève une erreur
RangeErrorchaque fois qu'il y a un conflit entre le décalage et l'identifiant du fuseau horaire. C'est le comportement par défaut deTemporal.ZonedDateTime.from(). prefer-
Utilise le décalage s'il est valide, sinon, calcule le décalage à partir de l'identifiant du fuseau horaire. Il s'agit du comportement par défaut de
Temporal.ZonedDateTime.prototype.with()(voir cette méthode pour plus de détails). Cela diffère deignorecar, en cas d'ambiguïté concernant l'heure locale, c'est le décalage qui est utilisé pour la résoudre plutôt que l'optiondisambiguation.
Si vous savez à l'avance comment vous souhaitez gérer l'ambiguïté liée au décalage horaire, pensez à utiliser l'option offset pour éviter les exceptions levées par défaut. Par exemple, une application de calendrier souhaitera probablement que l'identifiant de fuseau horaire « l'emporte » afin que les réunions récurrentes s'affichent à l'heure locale la plus récente pour ce fuseau horaire, dans ce cas offset: "ignore" est approprié. En revanche, une application de planification de tâches qui exécute une tâche exactement dans 3 heures devrait probablement choisir offset: "use", car les modifications apportées aux règles de fuseau horaire ne devraient pas changer la signification de « dans 3 heures ».
Dans certains cas, il se peut que vous ne sachiez pas quelle option offset est la bonne sans demander confirmation à l'utilisateur·ice. Dans ce cas, vous pouvez intercepter l'exception RangeError, puis demander à l'utilisateur·ice quelle heure locale est la bonne, avant de réessayer l'analyse en utilisant une autre option offset correspondant au choix de l'utilisateur·ice.
Notez que le décalage Z n'est pas équivalent à +00:00. Le décalage Z signifie « l'heure UTC est connue, mais le décalage par rapport à l'heure locale est inconnu », conformément au RFC 9557 (angl.). Lorsque la chaînes de caractères de l'heure utilise le décalage Z, l'option offset est ignorée et le décalage est dérivé de l'identifiant du fuseau horaire. En revanche, le décalage +00:00 est interprété comme un décalage horaire local qui correspond à UTC et est validé par rapport à l'identifiant du fuseau horaire.
Note :
Bien que Temporal.Instant.from() accepte également une chaîne de caractères RFC 9557 sous cette forme, il n'y a pas d'ambiguïté car elle ignore toujours l'identifiant de fuseau horaire et ne prend en compte que le décalage horaire.
Constructeur
Temporal.ZonedDateTime()Expérimental-
Crée un nouvel objet
Temporal.ZonedDateTimeen fournissant directement les données sous-jacentes.
Méthodes statiques
Temporal.ZonedDateTime.compare()-
Retourne un nombre (-1, 0, ou 1) indiquant si la première valeur de date et d'heure précède, est la même que, ou suit la deuxième valeur de date et d'heure. Équivalent à la comparaison des
epochNanosecondsdes deux dates et heures. Temporal.ZonedDateTime.from()-
Crée un nouvel objet
Temporal.ZonedDateTimeà partir d'un autre objetTemporal.ZonedDateTime, d'un objet avec des propriétés de date, d'heure et de fuseau horaire, ou d'une chaîne de caractères RFC 9557.
Propriétés d'instance
Ces propriétés sont définies sur Temporal.ZonedDateTime.prototype et partagées par toutes les instances de Temporal.ZonedDateTime.
Temporal.ZonedDateTime.prototype.calendarId-
Retourne une chaîne de caractères représentant le calendrier utilisé pour interpréter les dates internes ISO 8601.
Temporal.ZonedDateTime.prototype.constructor-
La fonction constructeur qui a créé l'objet instance. Pour les instances de
Temporal.ZonedDateTime, la valeur initiale est le constructeurTemporal.ZonedDateTime(). Temporal.ZonedDateTime.prototype.day-
Retourne un entier positif représentant l'index du jour dans le mois de cette date, basé sur 1, ce qui correspond au numéro de jour que vous verriez sur un calendrier. Dépend du calendrier. Généralement commence à 1 et est continu, mais pas toujours.
Temporal.ZonedDateTime.prototype.dayOfWeek-
Retourne un entier positif représentant l'index du jour dans la semaine de cette date, basé sur 1. Les jours de la semaine sont numérotés séquentiellement de
1àdaysInWeek, chaque numéro correspondant à son nom. Dépend du calendrier. 1 représente généralement le lundi dans le calendrier, même lorsque les locales utilisant le calendrier peuvent considérer un jour différent comme le premier jour de la semaine (voirIntl.Locale.prototype.getWeekInfo()). Temporal.ZonedDateTime.prototype.dayOfYear-
Retourne un entier positif représentant l'index du jour dans l'année de cette date, basé sur 1. Le premier jour de cette année est
1, et le dernier jour est ledaysInYear. Dépend du calendrier. Temporal.ZonedDateTime.prototype.daysInMonth-
Retourne un entier positif représentant le nombre de jours dans le mois de cette date. Dépend du calendrier.
Temporal.ZonedDateTime.prototype.daysInWeek-
Retourne un entier positif représentant le nombre de jours dans la semaine de cette date. Dépend du calendrier. Pour le calendrier ISO 8601, c'est toujours 7, mais dans d'autres systèmes de calendrier, cela peut varier d'une semaine à l'autre.
Temporal.ZonedDateTime.prototype.daysInYear-
Retourne un entier positif représentant le nombre de jours dans l'année de cette date. Dépend du calendrier. Pour le calendrier ISO 8601, c'est 365, ou 366 dans une année bissextile.
Temporal.ZonedDateTime.prototype.epochMilliseconds-
Retourne un entier représentant le nombre de millisecondes écoulées depuis l'époque Unix (minuit au début du 1er janvier 1970, UTC) jusqu'à cet instant. Équivaut à diviser
epochNanosecondspar1e6et à arrondir le résultat. Temporal.ZonedDateTime.prototype.epochNanoseconds-
Retourne un
BigIntreprésentant le nombre de nanosecondes écoulées depuis l'époque Unix (minuit au début du 1er janvier 1970, UTC) jusqu'à cet instant. Temporal.ZonedDateTime.prototype.era-
Retourne une chaîne de caractères en minuscules spécifique au calendrier représentant l'ère de cette date, ou
undefinedsi le calendrier n'utilise pas d'ères (par exemple, ISO 8601).eraeteraYearidentifient ensemble de manière unique une année dans un calendrier, de la même manière queyear. Dépend du calendrier. Pour le calendrier grégorien, c'est soit"ce", soit"bce". Temporal.ZonedDateTime.prototype.eraYear-
Retourne un entier qui n'est pas négatif représentant l'année de cette date dans l'ère, ou
undefinedsi le calendrier n'utilise pas d'ères (par exemple, ISO 8601). L'index de l'année commence généralement à 1 (plus courant) ou 0, et les années dans une ère peuvent diminuer avec le temps (par exemple, BCE grégorien).eraeteraYearidentifient ensemble de manière unique une année dans un calendrier, de la même manière queyear. Dépend du calendrier. Temporal.ZonedDateTime.prototype.hour-
Retourne un entier de 0 à 23 représentant la composante heure de cette date.
Temporal.ZonedDateTime.prototype.hoursInDay-
Retourne un entier positif représentant le nombre d'heures dans le jour de cette date dans le fuseau horaire. Il peut être supérieur ou inférieur à 24 en cas de changements de décalage tels que l'heure d'été.
Temporal.ZonedDateTime.prototype.inLeapYear-
Retourne un booléen indiquant si cette date se trouve dans une année bissextile. Une année bissextile est une année qui a plus de jours (en raison d'un jour ou d'un mois intercalaire) qu'une année commune. Dépend du calendrier.
Temporal.ZonedDateTime.prototype.microsecond-
Retourne un entier de 0 à 999 représentant la composante microseconde (10-6 seconde) de cette heure.
Temporal.ZonedDateTime.prototype.millisecond-
Retourne un entier de 0 à 999 représentant la composante milliseconde (10-3 seconde) de cette heure.
Temporal.ZonedDateTime.prototype.minute-
Retourne un entier de 0 à 59 représentant la composante minute de cette heure.
Temporal.ZonedDateTime.prototype.month-
Retourne un entier positif représentant l'index du mois dans l'année de cette date, basé sur 1. Le premier mois de cette année est
1, et le dernier mois est lemonthsInYear. Dépend du calendrier. Notez que contrairement àDate.prototype.getMonth(), l'index est basé sur 1. Si le calendrier a des mois intercalaires, alors le mois avec le mêmemonthCodepeut avoir des index demonthdifférents pour différentes années. Temporal.ZonedDateTime.prototype.monthCode-
Retourne une chaîne de caractères spécifique au calendrier représentant le mois de cette date. Dépend du calendrier. Habituellement, c'est
Msuivi d'un numéro de mois à deux chiffres. Pour les mois intercalaires, c'est le code du mois précédent suivi deL. Si le mois intercalaire est le premier mois de l'année, le code estM00L. Temporal.ZonedDateTime.prototype.monthsInYear-
Retourne un entier positif représentant le nombre de mois dans l'année de cette date. Dépend du calendrier. Pour le calendrier ISO 8601, c'est toujours 12, mais dans d'autres systèmes de calendrier, cela peut varier.
Temporal.ZonedDateTime.prototype.nanosecond-
Retourne un entier de 0 à 999 représentant la composante nanoseconde (10-9 seconde) de cette heure.
Temporal.ZonedDateTime.prototype.offset-
Retourne une chaîne de caractères représentant le décalage utilisé pour interpréter l'instant interne, sous la forme
±HH:mm(ou±HH:mm:ss.sssssssssavec autant de précision subminute que nécessaire). Temporal.ZonedDateTime.prototype.offsetNanoseconds-
Retourne un entier représentant le décalage utilisé pour interpréter l'instant interne, en nombre de nanosecondes (positif ou négatif).
Temporal.ZonedDateTime.prototype.second-
Retourne un entier de 0 à 59 représentant la composante seconde de cette heure.
Temporal.ZonedDateTime.prototype.timeZoneId-
Retourne une chaîne de caractères représentant l'identifiant de fuseau horaire utilisé pour interpréter l'instant interne. Il utilise la même chaîne de caractères utilisée lors de la construction de l'objet
Temporal.ZonedDateTime, qui est soit un nom de fuseau horaire IANA, soit un décalage fixe. Temporal.ZonedDateTime.prototype.weekOfYear-
Retourne un entier positif représentant l'index de la semaine basé sur 1 dans l'année de cette date, ou
undefinedsi le calendrier n'a pas de système de semaine bien défini. La première semaine de l'année est1. Dépend du calendrier. Notez que pour ISO 8601, les premiers et derniers jours de l'année peuvent être attribués à la dernière semaine de l'année précédente ou à la première semaine de l'année suivante. Temporal.ZonedDateTime.prototype.year-
Retourne un entier représentant le nombre d'années de cette date par rapport au début d'une année d'époque spécifique au calendrier. Dépend du calendrier. Habituellement, l'année 1 est soit la première année de la dernière ère, soit l'année ISO 8601
0001. Si l'époque est au milieu de l'année, cette année aura la même valeur avant et après la date de début de l'ère. Temporal.ZonedDateTime.prototype.yearOfWeek-
Retourne un entier représentant l'année à associer à la
weekOfYearde cette date, ouundefinedsi le calendrier n'a pas de système de semaine bien défini. Dépend du calendrier. Habituellement, c'est l'année de la date, mais pour ISO 8601, les premiers et derniers jours de l'année peuvent être attribués à la dernière semaine de l'année précédente ou à la première semaine de l'année suivante, ce qui peut entraîner une différence de 1 pouryearOfWeek. Temporal.ZonedDateTime.prototype[Symbol.toStringTag]-
La valeur initiale de la propriété
[Symbol.toStringTag]est la chaîne de caractères"Temporal.ZonedDateTime". Cette propriété est utilisée dansObject.prototype.toString().
Méthodes d'instance
Temporal.ZonedDateTime.prototype.add()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure avancée d'une durée donnée (sous une forme convertible parTemporal.Duration.from()). Temporal.ZonedDateTime.prototype.equals()-
Retourne
truesi cette date et heure est équivalente en valeur à une autre date et heure (sous une forme convertible parTemporal.ZonedDateTime.from()), sinonfalse. Elles sont comparées à la fois par leurs valeurs d'instant, leurs fuseaux horaires et leurs calendriers, donc deux dates et heures de calendriers ou fuseaux horaires différents peuvent être considérées comme égales parTemporal.ZonedDateTime.compare()mais pas parequals(). Temporal.ZonedDateTime.prototype.getTimeZoneTransition()-
Retourne un objet
Temporal.ZonedDateTimereprésentant le premier instant après ou avant cet instant auquel le décalage UTC du fuseau horaire change, ounulls'il n'y a pas de telle transition. Cela est utile pour connaître les règles de décalage d'un fuseau horaire, comme son schéma d'heure d'été. Temporal.ZonedDateTime.prototype.round()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure arrondie à l'unité donnée. Temporal.ZonedDateTime.prototype.since()-
Retourne un nouvel objet
Temporal.Durationreprésentant la durée entre une autre date et heure (sous une forme convertible parTemporal.ZonedDateTime.from()) et cette date et heure. La durée est positive si l'autre date et heure est avant cette date et heure, et négative si elle est après. Temporal.ZonedDateTime.prototype.startOfDay()-
Retourne un objet
Temporal.ZonedDateTimereprésentant le premier instant de cette date dans le fuseau horaire. Il a généralement une heure de00:00:00, mais peut être différent si minuit n'existe pas en raison des changements de décalage, auquel cas la première heure existante est retournée. Temporal.ZonedDateTime.prototype.subtract()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure reculée d'une durée donnée (sous une forme convertible parTemporal.Duration.from()). Temporal.ZonedDateTime.prototype.toInstant()-
Retourne un nouvel objet
Temporal.Instantreprésentant l'instant de cette date et heure. Temporal.ZonedDateTime.prototype.toJSON()-
Retourne une chaîne de caractères représentant cette date et heure dans le même format RFC 9557 que l'appel à
toString(). Destiné à être appelé implicitement parJSON.stringify(). Temporal.ZonedDateTime.prototype.toLocaleString()-
Retourne une chaîne de caractères représentant cette date et heure de manière sensible à la langue.
Temporal.ZonedDateTime.prototype.toPlainDate()-
Retourne un nouvel objet
Temporal.PlainDatereprésentant la partie date de cette date et heure. Temporal.ZonedDateTime.prototype.toPlainDateTime()-
Retourne un nouvel objet
Temporal.PlainDateTimereprésentant les parties date et heure de cette date et heure. Seules les informations de fuseau horaire sont supprimées. Temporal.ZonedDateTime.prototype.toPlainTime()-
Retourne un nouvel objet
Temporal.PlainTimereprésentant la partie heure de cette date et heure. Temporal.ZonedDateTime.prototype.toString()-
Retourne une chaîne de caractères représentant cette date et heure dans le format RFC 9557.
Temporal.ZonedDateTime.prototype.until()-
Retourne un nouvel objet
Temporal.Durationreprésentant la durée entre cette date et heure et une autre date et heure (sous une forme convertible parTemporal.ZonedDateTime.from()). La durée est positive si l'autre date et heure est après cette date et heure, et négative si elle est avant. Temporal.ZonedDateTime.prototype.valueOf()-
Lève une
TypeError, ce qui empêche les instances deTemporal.ZonedDateTimed'être converties implicitement en primitives lorsqu'elles sont utilisées dans des opérations arithmétiques ou de comparaison. Temporal.ZonedDateTime.prototype.with()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure avec certains champs remplacés par de nouvelles valeurs. Temporal.ZonedDateTime.prototype.withCalendar()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure interprétée dans le nouveau système de calendrier. Temporal.ZonedDateTime.prototype.withPlainTime()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant cette date et heure avec la partie heure entièrement remplacée par la nouvelle heure (sous une forme convertible parTemporal.PlainTime.from()) Temporal.ZonedDateTime.prototype.withTimeZone()-
Retourne un nouvel objet
Temporal.ZonedDateTimereprésentant le même instant que cette date et heure mais dans le nouveau fuseau horaire.
Spécifications
| Spécification |
|---|
| Temporal> # sec-temporal-zoneddatetime-objects> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Temporal - L'objet
Temporal.Duration - L'objet
Temporal.Instant - L'objet
Temporal.PlainDateTime - L'objet
Temporal.PlainDate - L'objet
Temporal.PlainTime