Я работаю в C#.net - .Net fx - это 2.0, который не поддерживает преобразование между разными часовыми поясами. Я написал планировщик на основе UTC, но он выдает ошибки в 1 час в периоды DTS для Лондона. Мне нужно какое-то решение, чтобы я мог получить правильное время в любом часовом поясе относительно UTC с правильными настройками летнего времени.
Как преобразовать время UTC во время в любом другом часовом поясе на С#
Ответы (1)
Переход на .NET 3.5 абсолютно невозможен? Это сделало бы вашу жизнь намного, намного проще. В противном случае вы застряли с простыми классами TimeZone и DaylightSavings, а также должны получать известные часовые пояса с помощью P/Invoke.
У Уильяма Стейси есть сообщение в блоге с кодом для этого - но я не пробовал, поэтому не могу ручаться за его точность. (По моему опыту, он обычно довольно хорош :) Без сомнения, есть похожие фрагменты кода, если он вам не поможет.
Я считаю, что API, который он использует, не имеет доступа к историческим данным, кстати. Другими словами, будет предполагаться, что переход на летнее время всегда начинается в первое воскресенье октября (или какое-то другое правило), а не известно, что правило изменилось с течением времени. TimeZoneInfo в .NET 3.5 поддерживает исторические данные там, где это делает ОС.