В.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", отличающееся?
Обновление конца
GMT не настраивает на Летнее время (DST). Вы можете услышать это из уст лошади на этом веб-сайте .
Добавьте эту строку кода, чтобы увидеть источник проблемы:
Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);
Вывод: True.
Это не проблема .NET, это сбой в Windows. Ключ реестра, который использует TimeZoneInfo, - это HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones \ GMT Standard Time. Вам лучше придерживаться UTC.
Разница заключается в следующем:
Дневное световое время (DST) с другой стороны, это перевод часов до и для смены сезонов, чтобы максимально использовать дневного света.
"Оно соблюдается во многих странах, но не во всех"
. Оно может меняться, так как прошлым летом некоторые страны, например Пакистан, решили перевести часы на месяц позже, чем обычно.
World Time Zones - хороший ресурс для получения актуальной информации о времени по всему миру.
Надеюсь, это поможет
Вот обсуждение Согласованных универсальных часовых поясов . Кажется, что UTC обычно используется, когда требуется высокая точность временных рамок. Greenwhich Meantime довольно близок и используется туда и обратно с UTC.
Надеюсь, это кому-то поможет.