TimeZoneInfo и IIS - PullRequest
       2

TimeZoneInfo и IIS

0 голосов
/ 29 октября 2011

Я использую следующую функцию для перевода даты из UTC в мое местное время (западно-австралийский стандарт, +8 по Гринвичу).

var waTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time");
var timeInWA = TimeZoneInfo.ConvertTime(utcDateTime, TimeZoneInfo.Utc, waTimeZone);

Однако этот код начал работать некорректно для определенных дат на нашем производственном сервере.

Например,

Если я конвертирую 31/10/2011 00:00 ->31/10/2011 09:00 вместо 31/10/2011 08:00.

если я преобразую 01/10/2011 00:00 -> 01/10/2011 08:00, что правильно.

Этот код работал нормально в течение некоторого времени после производства имы заметили это несколько дней назад.Сервер настроен на GMT +8, хотя я не думаю, что это влияет на этот фрагмент кода.

Кроме того, этот же фрагмент кода работает нормально на других серверах и локальных машинах.

Может ли кто-нибудь представить какую-то идею относительно того, что могло вызвать такое изменение поведения?Обновления Windows?Изменение конфигурации IIS?.Net ошибка?и т.д ...

ОБНОВЛЕНИЕ: Я проверил дополнительную информацию, как предложил Яхья.Результаты впечатляют.

waTimeZone.IsDaylightSavingTime(date) --> False

waTimeZone.GetUtcOffset(date) --> 08:00:00

Но я все равно получаю неправильное преобразование +9 часов вместо +8.Так что .Net здесь несколько непоследователен.

Однако я проверил записи реестра сервера, которые дают неправильное преобразование, и локальный компьютер, который дает мне правильные ответы, и это интересно.Registry Comparison

Я думаю, что наши ИТ-специалисты не обновляли исправления DST на сервере.

Обновление: подтверждение того, что ИТ-специалисты пропустили этот сервер в своих установках исправлений DST.Это коренная причина такого поведения.

1 Ответ

3 голосов
/ 29 октября 2011

Я подозреваю, что указанные даты / время отличаются в зависимости от перехода на летнее время - чтобы убедиться, что это действительно так, проверьте следующее для обоих значений и waTimeZone:

Насколько я могу судить, в некоторых частях Австралии DST больше не существует (закончилась DST в 2009 году - см. Эту правительственную ссылку WA http://wa.gov.au/daylightsaving/). , что вы видите, не ошибка, а какое-то действие, которое вы пропущено обращение к серверу :

Для MS Windows вам нужно будет предпринять некоторые действия, чтобы учесть это изменение - см. http://technet.microsoft.com/en-au/bb821275.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...