Разница между UTC и GMT по стандартному времени в .NET - PullRequest
46 голосов
/ 19 февраля 2010

В .NET следующие операторы возвращают разные значения:

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

.. и это ...

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

Почему это так?Я думал, что UTC и стандартное время по Гринвичу эквивалентны.


Обновление

После дальнейшего тестирования я обнаружил, что следующие выглядят эквивалент:

"UTC"

"Среднее время по Гринвичу"

"Стандартное время Марокко"

Принимая во внимание следующеев течение летних месяцев:

"Стандартное время по Гринвичу"

Возможно, мой вопрос должен звучать так: почему "Среднее время по Гринвичу" и "Стандартное время по Гринвичу" отличаются?1032 *

Окончание обновления

Ответы [ 6 ]

34 голосов
/ 19 февраля 2010

GMT не регулируется на Летнее время (летнее время). Вы можете услышать это изо рта лошади на этом веб-сайте.

Добавьте эту строку кода, чтобы увидеть источник проблемы:

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

Вывод: True.

Это не проблема .NET, это ошибка Windows. Раздел реестра, используемый TimeZoneInfo: HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones \ GMT Standard Time. Тебе лучше придерживаться UTC.

21 голосов
/ 21 сентября 2010

[Я просто подтверждаю ответ Ханса Пассанта]

Мне кажется, что существует путаница в отношении использования термина "GMT", который, по-видимому, используется для обозначения "среднего времени по Гринвичу", а также часового пояса, используемого в Великобритании / Ирландии - который меняется между GMT зимой Британское летнее время летом и, кажется, не имеет четко определенного названия само по себе!

Чтобы еще больше запутать, я запустил пример кода из документов MSDN для TimeZoneInfo.GetSystemTimeZones и посмотрел на вывод.

Я был очень удивлен, увидев следующее определение часового пояса «Стандартное время по Гринвичу»

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

Кажется (по крайней мере, мне), что тот, кто отвечал за определение часовых поясов в Microsoft, действительно запутал воду еще дальше.

Они, очевидно, хотели описать часовой пояс, используемый в Великобритании / Ирландии, но они дали ему идентификатор, который включал в себя термины «GMT» и UTC в идентификаторе и отображаемом имени. Я уверен, что это определение часового пояса (как бы оно ни называлось) было , а не UTC. Времена могут быть очень похожи на UTC в течение полугода, но это все!

13 голосов
/ 19 февраля 2010

Разница заключается в следующем:

  • Среднее время по Гринвичу (GMT) - это термин, первоначально относящийся к среднему солнечному времени в Королевской обсерватории вГринвич, Лондон.тогда как
  • Всемирное координированное время (UTC) (по-французски: Temps Universel Coordonné) - это стандарт времени, основанный на международном атомном времени (TAI), с добавлением дополнительных секунд в нерегулярныеинтервалы, чтобы компенсировать замедление вращения Земли
  • Время перехода на летнее время (DST) , с другой стороны, опережает часы до и за с сезонными изменениями,Максимально использовать дневной свет.

    "It is observed in many countries but not all".Это может быть переменным, так как прошлым летом некоторые страны, такие как Пакистан, решили вернуть часы на месяц позже, чем обычно.

  • Мировые часовые пояса - хороший ресурс для актуальной информации о времени по всему миру.

Надеюсь, это поможет

12 голосов
/ 16 апреля 2014

Это поздний ответ, который вряд ли сможет прочитать первоначальный спрашивающий, но который могут найти люди, которые гуглят по этой теме.

Имена Стандартное время по Гринвичу и Летнее время по Гринвичу неизвестны за пределами Редмонда. Это мифические животные, которые появляются только в бестиарии, которая называется Windows Registry. В реальном мире зимой Великобритания наблюдает GMT (среднее время по Гринвичу), а летом BST (британское летнее время). BST на 1 час вперед (на восток) от GMT. Европейцы обычно говорят не о «дневном времени», а о «летнем», по крайней мере, на тех языках, которые я знаю.

Один респондент сказал, что следует использовать UTC вместо GMT . Этот совет Международного астрономического союза восходит к 1935 году. Его точка зрения заключалась в том, что до 1925 года время по Гринвичу отсчитывалось с полудня, а не полуночи, поэтому, хотя это было 10 лет спустя, вероятность двусмысленности могла сохраняться. Но сейчас это немного устарело. За последние 80 лет термины GMT и Universal Time были почти синонимами. Не совсем, конечно. Но вам нужен астроном, чтобы объяснить вам разницу. Если вас беспокоят часы, а не секунды, вам, вероятно, все равно.

GMT - о гражданских расписаниях в англоязычных странах. Это не устарело. Это закреплено в законодательстве Великобритании, Ирландии, Канады и даже Бельгии.

Различные ароматы Универсального времени связаны с астрономическим хронометрированием.

И гражданский учет времени, я думаю, был тем, о чем был первоначальный вопрос.

1 голос
/ 02 июля 2013

Объект TimeZoneInfo, имеющий .Id из "GMT Standard Time", соответствует .DisplayName из "(UTC) Dublin, Edinburgh, Lisbon, London".

Этот часовой пояс использует среднее время по Гринвичу (GMT) (UTC + 0) в течение зимних месяцев и британское летнее время (BST) (UTC + 1) в течение летних месяцев.

Ссылка здесь .

Часовой пояс для UTC имеет .Id из "UTC" и .DisplayName из "(UTC) Coordinated Universal Time".

Это две разные настройки часового пояса.

Кроме того, при просмотре списка отображаемых имен часовых поясов в Windows:

Time Zone List

Значение в скобках - это стандартное смещение , поэтому, похоже, что для UTC есть четыре различных параметра, на самом деле есть только один. Просто три другие зоны используют UTC в качестве базового смещения, когда летнее время не действует.

0 голосов
/ 19 февраля 2010

Здесь обсуждается скоординированные универсальные часовые пояса . Кажется, что UTC обычно используется, когда требуется высокая точность времени. Greenwhich Тем временем довольно близко и используется туда-сюда с UTC.

Надеюсь, это поможет некоторым.

...