51 votes

Différence entre l'heure UTC et l'heure GMT en .NET

En .NET, les instructions suivantes renvoient des valeurs différentes :

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
  );
// displays 7/1/2010 1:30:00 PM

..et ceci...

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("UTC"))
  );
// displays 7/1/2010 12:30:00 PM

Pourquoi ? Je pensais que l'UTC et l'heure normale GMT étaient équivalents.


Mise à jour

Après d'autres tests, je constate que apparaître pour être équivalents :

"UTC"

"Temps moyen de Greenwich"

"Heure normale du Maroc"

En revanche, il en va différemment pendant les mois d'été :

"Heure standard GMT"

Ma question devrait peut-être être : pourquoi le "Greenwich Mean Time" et le "GMT Standard Time" sont-ils différents ?

Mise à jour de la fin

3 votes

Vous n'êtes pas seul à être confus : connect.microsoft.com/VisualStudio/feedback/details/298123/

4 votes

Le lien pour se connecter est mort

41voto

Hans Passant Points 475940

GMT fait no de s'adapter à Heure d'été (DST). Vous pouvez l'entendre de la bouche du cheval sur cette page site web.

Ajoutez cette ligne de code pour voir la source du problème :

  Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);

Sortie : Vrai.

Il ne s'agit pas d'un problème .NET, mais d'une erreur de Windows. La clé de registre que TimeZoneInfo utilise est HKLM \SOFTWARE\Microsoft\Windows NT \CurrentVersion\Time Zones \GMT L'heure normale. Vous feriez mieux de vous en tenir à l'UTC.

1 votes

Intéressant... alors que TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time") renvoie false, comme UTC.

11 votes

Je ne pense pas que Windows se trompe, c'est juste une confusion terminologique. Ils utilisent GMT pour se référer au fuseau horaire contenant Dublin, Edimbourg, Lisbonne, Londres entre autres, et ces faire utiliser l'heure d'été.

0 votes

@HansPassant Pouvez-vous s'il vous plaît indiquer où wwp.greenwichmeantime.com/what-is-gmt.htm indique que l'heure GMT n'est pas ajustée pour l'heure d'été (ce qui implique, je pense, que l'heure UTC l'est) ? J'avais moi-même pensé que l'heure GMT s'adaptait à l'heure d'été et pas l'heure UTC, mais je ne suis pas convaincu. Ma compréhension actuelle est que GMT et UTC sont eux-mêmes fixes et que les fuseaux horaires sont reflétés comme des décalages par rapport à cela et que le DST est un ajustement supplémentaire à ce temps fixe. En d'autres termes, l'heure GMT est l'heure GMT et si vous vous trouvez dans une zone où vous observez l'heure d'été, cela se traduit par l'heure GMT +/- le décalage du fuseau horaire et l'ajustement de l'heure d'été.

26voto

Chris F Points 1955

[Je ne fais que confirmer la réponse de Hans Passant].

Il me semble qu'il y a une confusion sur l'utilisation du terme "GMT" qui semble être utilisé pour signifier "Greenwich Mean Time" et aussi le fuseau horaire utilisé au Royaume-Uni/Irlande - qui bascule entre le GMT en hiver et l'heure d'été britannique en été et qui ne semble pas avoir un nom bien défini en soi !

Pour rendre les choses encore plus confuses, j'ai exécuté l'exemple de code de l'application Documents MSDN pour TimeZoneInfo.GetSystemTimeZones (en anglais) et regardé la sortie.

J'ai été très surpris de voir la définition suivante du fuseau horaire "GMT Standard Time".

ID: GMT Standard Time
   Display Name:  (UTC) Dublin, Edinburgh, Lisbon, London
   Standard Name:                       GMT Standard Time
   Daylight Name:                       GMT Daylight Time   \*\*\*Has Daylight Saving Time\*\*\*
   Offset from UTC:                       0 hours, 0 minutes
   Number of adjustment rules:                          1
   Adjustment Rules:
      From 01/01/0001 00:00:00 to 31/12/9999 00:00:00
      Delta: 01:00:00
      Begins at 01:00 on Sunday of week 5 of March
      Ends at 02:00 on Sunday of week 5 of October

Il semble (du moins pour moi) que celui qui était chargé de définir les fuseaux horaires chez Microsoft a vraiment brouillé les cartes encore plus ici.

Ils voulaient manifestement décrire le fuseau horaire utilisé au Royaume-Uni et en Irlande, mais ils lui ont donné un identifiant qui inclut les termes "GMT" et UTC dans l'identifiant et le nom d'affichage. Je suis assez confiant dans le fait que cette définition du fuseau horaire (quel que soit le nom qu'on lui donne) est no UTC. Il peut avoir des heures très proches de l'UTC pendant la moitié de l'année, mais c'est tout !

1 votes

Une minorité importante de personnes en Grande-Bretagne pense que GMT signifie l'heure d'été là où ils vivent, c'est-à-dire qu'elle est avancée pour l'été. Ils ont tout simplement tort. Mais pour tenir compte de cette idée fausse largement répandue, ma femme, lorsqu'elle organise des événements de jeux en ligne, précise Heure du Royaume-Uni no GMT o BST .

17voto

Paul Keating Points 51

Il s'agit d'une réponse tardive que l'auteur de la question initiale ne lira probablement pas, mais que les personnes qui recherchent ce sujet sur Google pourraient trouver.

Les noms Heure normale GMT y Heure d'été GMT sont inconnus en dehors de Redmond. Ce sont des animaux mythiques qui n'apparaissent que dans le bestiaire appelé Registre Windows. Dans le monde réel, en hiver, le Royaume-Uni observe l'heure GMT (Greenwich Mean Time) et en été, il observe l'heure BST (British Summer Time). Le BST est en avance d'une heure (vers l'est) sur le GMT. Les Européens ne parlent généralement pas d'"heure d'été" mais d'"heure d'été", du moins dans les langues que je connais.

Un répondant a dit que l'on devrait utiliser UTC de préférence à GMT . Ce conseil, émanant de l'Union astronomique internationale, date de 1935. Son argument était qu'avant 1925, l'heure GMT était comptée à partir de midi et non de minuit, donc même si c'était 10 ans plus tard, la possibilité d'une ambiguïté aurait pu persister à ce moment-là. Mais c'est un peu dépassé maintenant. Au cours des 80 dernières années, les termes GMT et Temps universel ont été presque synonymes. Pas tout à fait, bien sûr. Mais vous avez besoin d'un astronome pour vous expliquer la différence. Si vous vous préoccupez des heures, et non des secondes, vous ne vous en soucierez probablement pas.

GMT concerne l'heure civile dans les pays anglophones. Il n'est pas obsolète. Elle est inscrite dans la loi au Royaume-Uni, en Irlande, au Canada et même en Belgique.

Les différentes variantes du temps universel concernent le chronométrage astronomique.

Et le chronométrage civil, je pense, était le sujet de la question initiale.

13voto

Asad Butt Points 8989

La différence est la suivante :

  • Temps moyen de Greenwich (GMT) est un terme désignant à l'origine le temps solaire moyen solaire moyen à l'Observatoire royal de Greenwich, à Londres.

  • Temps universel coordonné (UTC) (En français : Temps Universel Coordonné) est un standard de temps basé sur le Temps Atomique International (TAI). avec des secondes intercalaires ajoutées à intervalles à intervalles irréguliers pour compenser le ralentissement de la rotation de la Terre

  • Heure d'été (DST) d'autre part, c'est l'avancement des horloges à et pour avec les changements de saison, pour utiliser au maximum la lumière du jour.

    "It is observed in many countries but not all" . Elle pourrait être variable, car l'été dernier, certains pays comme le Pakistan ont décidé de retarder l'heure d'un mois par rapport à la normale.

  • Fuseaux horaires mondiaux est une bonne ressource pour obtenir des informations dans le monde entier.

J'espère que cela vous aidera

2 votes

Je vous recommande de reformater votre réponse car de la manière dont elle est présentée, le lecteur pourrait penser que GMT, UTC et DST sont analogues dans leur signification. L'heure GMT et l'heure UTC sont analogues, mais pas l'heure d'été.

1voto

Matt Johnson Points 33433

El TimeZoneInfo ayant l'objet .Id de "GMT Standard Time" correspond à la .DisplayName de "(UTC) Dublin, Edinburgh, Lisbon, London" .

Ce fuseau horaire utilise l'heure moyenne de Greenwich (GMT) (UTC+0) pendant les mois d'hiver, et l'heure d'été britannique (BST) (UTC+1) pendant les mois d'été.

Référence ici .

Le fuseau horaire pour UTC a un .Id de "UTC" et un .DisplayName de "(UTC) Coordinated Universal Time" .

Il s'agit de deux réglages de fuseau horaire différents.

De même, lorsque l'on regarde la liste des noms d'affichage des fuseaux horaires dans Windows :

Time Zone List

La valeur entre parenthèses est juste la standard Ainsi, alors qu'il semble y avoir quatre réglages différents pour UTC, il n'y en a en réalité qu'un seul. C'est juste que les trois autres zones utilisent UTC comme décalage de base lorsque l'heure d'été n'est pas en vigueur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X