Différence entre L'heure UTC et L'heure GMT Standard in.NET

.NET, les instructions suivantes retournent 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 cette...

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 est-ce? Je pensais que L'heure UTC et L'heure GMT étaient équivalentes.


mise à Jour

Après test, je trouve que le suivant semble équivalent:

"UTC"

<!-"Greenwich Mean Time"

"Standard Maroc Temps"

alors que ce qui suit est différent pendant les mois d'été:

"GMT Standard Time"

peut-être ma question devrait être, pourquoi "Greenwich Mean Time" et "GMT Standard Time" différent?

Mise À Jour

45
demandé sur Mark Hurd 2010-02-19 00:29:15

6 réponses

GMT does ajuster pour heure (DST). Vous pouvez l'entendre de la bouche des chevaux sur ce site web.

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

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

Sortie: True.

ce n'est pas un problème.net, C'est Windows qui se plante. La clé de registre utilisée par TimeZoneInfo est HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\GMT Standard Time. Vous feriez mieux de bâton avec l'UTC.

33
répondu Hans Passant 2013-11-03 21:41:54

[je suis vraiment juste la sauvegarde de Hans Passant de réponse]

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

pour embrouiller les choses encore plus, j'ai lancé le code échantillon de MSDN docs for TimeZoneInfo.GetSystemTimeZones et regarda 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 (au moins pour moi) que celui qui était en charge de définir les fuseaux horaires dans Microsoft a vraiment brouillé les pistes encore plus loin ici.

ils ont évidemment voulu décrire le fuseau horaire en usage au Royaume-Uni / Irlande mais ils lui ont donné un ID qui incluait les Termes "GMT" et UTC dans l'ID et le nom d'affichage. Je suis assez confiant que cette définition du fuseau horaire (quel que soit son nom) est UTC. Il y a peut-être des périodes très semblables à L'UTC pendant la moitié de l'année, mais c'est tout!

21
répondu Chris Fewtrell 2015-05-03 19:35:27

La différence est comme suit:

  • Temps Moyen de Greenwich (GMT) est un terme faisant à l'origine référence à la moyenne heure solaire à L'Observatoire Royal à Greenwich, Londres. alors que les
  • Temps Universel Coordonné (UTC) (Français: Temps Universel Coordonné) est un standard de temps basé sur sur le Temps Atomique International (TAI) avec des secondes intercalaires ajouté irrégulière des intervalles pour compenser Le ralentissement de la terre rotation
  • Lumière du Jour, l'Heure d'été (DST) sur l'autre main est avance des horloges vers et pour avec changements de saison, Pour faire le max de l'utilisation de la lumière du jour.

    "It is observed in many countries but not all". Il pourrait être variable, comme l'été dernier certains pays comme le Pakistan, ont décidé de ramener des horloges un mois plus tard qu'ils ne le font normalement.

  • Fuseaux Horaires Du Monde est un bon des ressources pour la mise à jour de temps les informations autour de la Globe.

Espérons que cette aide

13
répondu Asad Butt 2014-02-06 06:09:50

il s'agit d'une réponse tardive que l'auteur de la question initiale est peu susceptible de lire, mais que les personnes qui cherchent sur google pour ce sujet peuvent trouver.

noms GMT Standard Time et GMT Daylight Time sont inconnus à L'extérieur de Redmond. Ce sont des animaux mythiques qui n'apparaissent que dans le bestiaire appelé le registre Windows. Dans le monde réel, en hiver le Royaume-Uni observe GMT (Heure de Greenwich) et en été il observe BST (heure D'été Britannique). La BST a 1 heure d'avance (vers L'est) de GMT. Les européens en général ne parlent pas de la "lumière du temps" mais "heure d'été", au moins dans les langues que je connais.

un répondant a dit qu'il fallait utiliser UTC de préférence à GMT. Ce conseil, de L'Union Astronomique Internationale, Date de 1935. Son point était que, avant 1925, GMT a été compté à partir de midi pas minuit, donc même si c'était 10 ans plus tard, la possibilité de l'ambiguïté pourrait encore avoir persisté alors. Mais c'est un peu obsolète maintenant. Depuis 80 ans, les Termes " GMT " et "temps universel" sont presque synonymes. Pas tout à fait, bien sûr. Mais vous avez besoin d'un astronome pour expliquer la différence pour vous. Si vous êtes préoccupé par les heures, pas les secondes, vous ne vous en soucierez probablement pas.

GMT est sur la chronométrie civile dans les pays anglophones. Il n'est pas obsolète. Elle est consacrée par la loi au Royaume-Uni, en Irlande, au Canada et même en Belgique.

les différentes saveurs du temps universel sont chronométrage astronomique.

et la chronométrage civil, je pense, était ce sur quoi la question initiale portait.

11
répondu BoarGules 2017-05-10 23:41:20

TimeZoneInfo avoir .Id"GMT Standard Time" correspond à .DisplayName"(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é De Grande-Bretagne (BST) (UTC+1) pendant les mois d'été.

Référence ici.

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

ce sont deux fuseaux horaires différents paramètre.

aussi, en regardant la liste des noms de fuseaux horaires dans Windows:

Time Zone List

La valeur entre parenthèses est juste l' standard offset, donc bien qu'il semble qu'il y ait quatre réglages différents pour UTC, il n'y en a 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.

1
répondu Matt Johnson 2015-06-02 23:45:18

Voici une discussion de Temps Universels Coordonnés. Il semble que L'UTC soit habituellement utilisé lorsqu'une haute précision est nécessaire pour la période de temps. Green which entretemps est assez proche et est utilisé en va-et-vient avec UTC.

j'Espère que cela aide certains.

0
répondu Chris 2010-11-20 23:46:43