Как определить, находится ли данная дата в летнем времени для данного часового пояса в .NET 2.0?

StackOverflow https://stackoverflow.com/questions/44795

Вопрос

Я использую .NET 2.0 и работаю под средним уровнем доверия (поэтому Информация о часовом поясе и Реестр не допускаются).Я прошу пользователя указать две даты и часовой пояс, и мне бы очень хотелось иметь возможность автоматически определять, нужно ли мне настроить часовой пояс для летнего времени.

Вероятно, это даже недопустимый сценарий, если у меня нет некоторых очень надежная поддержка, а-ля Информация о часовом поясе, чтобы различать все разновидности часовых поясов.

Это было полезно?

Решение

В .NET 2.0 вам придется кодировать это самостоятельно.Это включает в себя исследование законов о летнем времени в различных регионах и встраивание их в ваши собственные структуры данных.Проблема несколько упрощается, если вас интересует только подмножество часовых поясов, например только в США, но если вам нужны все глобальные часовые пояса, вам предстоит много работы, и тогда код придется обновлять каждый раз. несколько лет, когда законы изменятся.Даже новые объекты часовых поясов в последней версии .NET потребуют обновлений Windows, чтобы поддерживать их правильность по мере изменения законов.

Смотреть здесь, здесь, и здесь для получения дополнительной информации.

Другие советы

А База данных ТЗ — это общедоступная база данных правил часовых поясов, которая очень хорошо поддерживается.Существует также скомпилированный формат данных, которые они предоставляют, и множество библиотек для чтения скомпилированных данных, например эта: ZoneInfo (база данных tz/база данных Олсона).NET API

Отличная библиотека часовых поясов здесь: TZ4Net

Ну, поскольку TimeZoneInfo исключено, вы, вероятно, не найдете решения в самой структуре (но не цитируйте меня по этому поводу).

В этом случае рассматривали ли вы возможность отразить TimeZoneInfo class и используя то, что вы там найдете?

@Доменик, я рассматривал, но предпочитаю оставаться законным, и я совершенно уверен, что информацию в любом случае придется внедрить в структуру или получить из реестра каким-то хитрым способом, не требующим разрешений.. .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top