web-dev-qa-db-fra.com

UTC vs format ISO pour temps

J'essaie de comprendre la différence entre les formats UTC et ISO et quand utiliser quoi lors du transfert de messages entre serveurs. Alors quand j'essaie ce qui suit c'est ce que je reçois

new Date().toISOString()
"2019-11-14T00:55:31.820Z"

new Date().toUTCString()
"Thu, 14 Nov 2019 00:55:16 GMT"

Je comprends le format ISO et sa norme utilisée pour représenter le temps, mais quel est le but de l'UTC et où je les utiliserais-je?

9
tmp dev

tl; dr

  • Toujours utiliser ISO 8601 Format: 2019-11-14T00:55:31.820Z
  • Évitez le format hérité de RFC 1123 et 822: Thu, 14 Nov 2019 00:55:16 GMT

UTC & GMT sont tenus de temps en temps, pas de formats

UTC et GMT ne sont pas des formats.

[~ # ~] UTC [~ # ~ ~] et GMT sont deux façons légèrement différentes de la durée de suivi. Ceci est un sujet compliqué, voir les pages Wikipedia pour les détails de Gory si vous voulez vraiment savoir.

Pour les applications commerciales communes, il existe aucune différence significative , littéralement moins d'une seconde différence. La plupart des programmeurs peuvent utiliser les termes de manière interchangeable. Si vous travaillez pour NASA, ou les projets de navigation GPS/Galileo, vous voudrez alors en savoir plus.

ISO 8601

Le format vu dans votre premier exemple 2019-11-14T00:55:31.820Z est défini par la norme ISO 8601 . Le T au milieu sépare la partie du mois d'année à partir de la partie d'heure-minute. Le Z à la fin signifie UTC, c'est-à-dire un décalage-de-UTC de zéro minutes-minutes-secondes. Le Z est prononcé "Zulu" par tradition militaire/aviation.

La norme ISO 8601 est plus moderne. Les formats sont judicieusement conçus pour être faciles à analyser par la machine et facile à lire par des humains à travers les cultures.

Choisissez toujours ISO 8601 lors de la sérialisation des valeurs de date-heure comme texte.

RFC 1123/RFC 822

Votre deuxième exemple String Thu, 14 Nov 2019 00:55:16 GMT est défini dans les plus anciennes normes RFC 112 & RFC 822 .

Ceux-ci sont hérité formats. Ils sont terribles, difficiles à analyser par la machine. Et ils sont mauvais pour les humains alors qu'ils assument la langue anglaise et des normes culturelles particulières.

Évitez ce format Dans la mesure du possible. Utilisez cela uniquement si nécessaire pour les anciens protocoles et les systèmes non encore mis à jour pour ISO 8601.

Fuseaux horaires

Votre exemple de 2019-11-14T00:55:31.820Z désigne un décalage de l'UTC des secondes d'heures d'heure zéro. C'est le moment de la journée et de la date indiquée lorsque vous êtes debout avant l'horloge affichée à la Observatoire royal Greenwich .

enter image description here

(- source photo )

Le même moment simultané que vu sur les horloges suspendues au mur en Tunisie montrent une heure plus tard: 2019-11-14t01: 55: 31.820 + 01: 00 [Afrique/Tunis]. Le fuseau horaire de la Tunisie Africa/Tunis est une heure à venir de l'UTC à ce moment, comme indiqué par le +01:00.

Le même moment simultané que vu sur les horloges suspendues sur les murs du Québec montrent près de 8 PM de la date antérieure: 2019-11-13t19: 55: 31.820-05: 00 [Amérique/Montréal ]. Le fuseau horaire du Québec America/Montreal est cinq heures derrière UTC à ce moment, comme indiqué par le -05:00.

Vous pouvez voir ces calculs en étant fabriqué avec Java code (pas JavaScript sous tagué sur votre question) exécutant en direct sur ideone.com .

Généralement, mieux faire la majeure partie de votre pensée, votre logique commerciale, votre stockage de données, votre échange de données et votre enregistrement de l'UTC. Ajustez un fuseau horaire uniquement lorsque vous avez besoin des règles de l'entreprise et lors de la présentation de valeurs à un utilisateur.

7
Basil Bourque