У меня проблема с печально известным летним временем.Летнее время и DateTime.AddHour()
У меня есть список точек данных, по одному для каждого часа в году. Для того, чтобы проверить, все точки данных присутствуют, я создаю время итератора так:
DateTime timeIterator = new DateTime(year, 1, 1, 0, 0, 0);
итерации его с
timeIterator = timeIterator.AddHours(1);
и проверить на каждую итерацию, если момент времени присутствует в списке.
Проблема возникает, когда дело доходит до летнего времени. Im мой пример 2014 года, часы перемещаются на 30. марша с 0200 до 0300. Итак, после 0159 приходит 0300. Но DateTime.AddHours() полностью игнорирует переход на летнее время. Если TimeIterator находится в {30.03.2014 01:00:00}, и я вызываю AddHours (1), я получаю {30.03.2014 02:00:00}, которого явно не существует.
Если я сейчас тестирую список против этого datapoint, он (естественно) не входит в список, и я ошибаюсь в ошибке «отсутствует ошибка передачи данных».
Как проверить, действительно ли мой DateTime является действительным моментом времени?
Спасибо заранее,
Frank
Ну, это действительно зависит, в какой стране вы говорите. –
Ваш вопрос, связанный с [this] (http://stackoverflow.com/questions/5811267/net-accounting-for-daylight-savings), отвечает за TimezoneInfo. –
Также читайте [здесь] (http://codeofmatt.com/2015/03/06/common-daylight-saving-time-mistakes-for-net-developers/), ищите * Подтвердите свои данные! *. –