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