Разница между UTC и стандартным временем GMT in.NET
в .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 и GMT эквивалентно.
обновление
при дальнейшем тестировании я нахожу, что следующее появляется эквивалентны:
"UTC"
"Время По Гринвичу"
"Стандартные Марокко Время"
в то время как следующее отличается в летние месяцы:
"стандартное время GMT"
возможно, мой вопрос должен быть, почему" среднее время Гринвича "и" стандартное время GMT " отличаются?
Обновления
6 ответов
GMT делает не изменить на летнее время (DST). Вы можете услышать это из уст лошади на этом веб-сайт.
добавьте следующую строку кода, чтобы увидеть источник проблемы:
Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);
Вывод: True.
Это не проблема .NET, это Windows messing up. Раздел реестра, используемый TimeZoneInfo, - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\часовые пояса\GMT стандартное время. Вам лучше держаться с UTC.
[Я действительно просто резервное копирование ответа Ханса Пассанта]
Мне кажется, что есть путаница в использовании термина "GMT", который, похоже, используется для обозначения" Гринвичского среднего времени", а также часового пояса, используемого в Великобритании/Ирландии, который переворачивается между GMT зимой и британским летним временем летом и, похоже, не имеет четко определенного имени в своем собственном праве!
чтобы запутать вещи еще больше, я запустил пример кода из документы MSDN для TimeZoneInfo.GetSystemTimeZones и посмотрел на выход.
Я был очень удивлен, увидев следующее определение часового пояса "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
Мне кажется (по крайней мере, для меня), что тот, кто отвечал за определение часовых поясов в Microsoft, действительно замутнил воду еще дальше.
они, очевидно, хотели описать часовой пояс, используемый в Великобритании / Ирландии, но они дали ему идентификатор, который включал термины "GMT" и UTC в ID и отображаемое имя. Я уверен, что это определение часового пояса (как бы оно ни называлось) -не UTC. Это может быть раз, которые очень похожи на UTC в течение половины года, но это все!
разница заключается в следующем:
- среднее время по Гринвичу (GMT) is термин, первоначально означающий солнечное время в Королевской обсерватории в Гринвиче, Лондон. тогда как
- Координированное Универсальное Время (UTC) (Французский: Temps Universel Coordonné) - это стандарт времени о международном атомном времени (TAI) с добавленными секундами прыжка на нерегулярном интервалы для компенсации Замедление земли вращение
-
день свет экономия времени (DST) с другой стороны наступали часы и с сезон меняется, чтобы максимально использовать дневной свет.
"It is observed in many countries but not all"
. Это может быть переменным, так как прошлым летом некоторые страны, такие как Пакистан, решили вернуть часы на месяц позже, чем обычно. Мировые Часовые Пояса - это хорошо ресурс-до-до настоящего времени информация вокруг шар.
надеюсь, что это помогает
это поздний ответ, который вряд ли прочитает первоначальный спрашивающий, но который могут найти люди, которые google для этой темы.
имена стандартное время GMT и GMT дневное время неизвестны за пределами Редмонд. Это мифические животные, которые появляются только в бестиарии под названием Реестр Windows. В реальном мире зимой Великобритания наблюдает GMT (среднее время по Гринвичу), а летом-BST (британское летнее время). BST составляет 1 час впереди (на восток) GMT. Европейцы обычно говорят не о" дневном времени", а о" летнем времени", по крайней мере, на тех языках, которые я знаю.
один респондент сказал, что нужно использовать UTC вместо GMT. Этот совет Международного астрономического союза датируется 1935 годом. Его смысл был в том, что до 1925 года GMT считался с полудня, а не с полуночи, поэтому, хотя прошло 10 лет, возможность двусмысленности все еще могла сохраниться. Но сейчас он немного устарел. В течение последних 80 лет термины GMT и Universal Time были почти синонимами. Не совсем, конечно. Но вам нужен астроном, чтобы объяснить разницу. Если вас беспокоят часы, а не секунды, вам, вероятно, будет все равно.
GMT - это гражданское хронометраж в англоязычных странах. Она не устарела. Он закреплен в законодательстве Великобритании, Ирландии, Канады и даже Бельгии.
различные ароматы универсального времени об астрономических часов.
и гражданское хронометраж, я думаю, был тем, о чем был первоначальный вопрос.
на TimeZoneInfo
объекта .Id
of "GMT Standard Time"
соответствует .DisplayName
of "(UTC) Dublin, Edinburgh, Lisbon, London"
.
этот часовой пояс использует среднее время по Гринвичу (GMT) (UTC+0) в зимние месяцы, а британское летнее время (BST) (UTC+1) в летние месяцы.
часовой пояс для UTC имеет .Id
of "UTC"
и a .DisplayName
of "(UTC) Coordinated Universal Time"
.
это два разных часовых пояса настройки.
кроме того, при просмотре списка отображаемых имен часовых поясов в Windows:
значения в скобках-это просто стандартный offset, поэтому, хотя похоже, что есть четыре разных параметра для UTC, на самом деле есть только один. Просто остальные три зоны используют UTC в качестве базового смещения, когда летнее время не действует.
здесь идет обсуждение Координированные Вселенские Часовые Пояса. Похоже, что UTC обычно используется, когда требуется высокая точность для временных рамок. Greenwhich тем временем довольно близко и используется взад и вперед с UTC.
надеюсь, это поможет.