Как определить, находится ли данная дата в летнем времени для данного часового пояса в .NET 2.0?
-
09-06-2019 - |
Вопрос
Я использую .NET 2.0 и работаю под средним уровнем доверия (поэтому Информация о часовом поясе и Реестр не допускаются).Я прошу пользователя указать две даты и часовой пояс, и мне бы очень хотелось иметь возможность автоматически определять, нужно ли мне настроить часовой пояс для летнего времени.
Вероятно, это даже недопустимый сценарий, если у меня нет некоторых очень надежная поддержка, а-ля Информация о часовом поясе, чтобы различать все разновидности часовых поясов.
Решение
В .NET 2.0 вам придется кодировать это самостоятельно.Это включает в себя исследование законов о летнем времени в различных регионах и встраивание их в ваши собственные структуры данных.Проблема несколько упрощается, если вас интересует только подмножество часовых поясов, например только в США, но если вам нужны все глобальные часовые пояса, вам предстоит много работы, и тогда код придется обновлять каждый раз. несколько лет, когда законы изменятся.Даже новые объекты часовых поясов в последней версии .NET потребуют обновлений Windows, чтобы поддерживать их правильность по мере изменения законов.
Смотреть здесь, здесь, и здесь для получения дополнительной информации.
Другие советы
А База данных ТЗ — это общедоступная база данных правил часовых поясов, которая очень хорошо поддерживается.Существует также скомпилированный формат данных, которые они предоставляют, и множество библиотек для чтения скомпилированных данных, например эта: ZoneInfo (база данных tz/база данных Олсона).NET API
Отличная библиотека часовых поясов здесь: TZ4Net
Ну, поскольку TimeZoneInfo
исключено, вы, вероятно, не найдете решения в самой структуре (но не цитируйте меня по этому поводу).
В этом случае рассматривали ли вы возможность отразить TimeZoneInfo
class и используя то, что вы там найдете?
@Доменик, я рассматривал, но предпочитаю оставаться законным, и я совершенно уверен, что информацию в любом случае придется внедрить в структуру или получить из реестра каким-то хитрым способом, не требующим разрешений.. .