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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
1 034
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

В таком случае, рассматривали ли вы возможность отражения класса TimeZoneInfo и использования того, что вы там нашли?

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

Ответ принят как подходящий

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

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

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

Mihai Limbășan 01.10.2008 18:54

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

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

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