Это не будет и фактически НЕ МОЖЕТ , основываясь на том факте, что оно не заставляет вас использовать UTC для создания DateTime и не позволяет вам указать, действовал ли DST при Вы создаете DateTime со значением местного времени. Кроме того, он позволяет режиму (LT или UTC) быть «неопределенным», что является просто асинином.
Допуская построение значений DateTime из значений местного времени, можно создать значение DateTime (указанное как местное время), которое является неоднозначным (например, любое время между 1 и 2 часами ночи 2 ноября в США, когда местное час повторяется) и не может быть детерминировано преобразован обратно в UTC, ЕСЛИ конструктор не предоставил параметр для указания, действовал ли DST для данного локального времени .
Поскольку он не предоставляет такого параметра, структура класса DateTime является неполной и некорректной, поскольку не учла все параметры, необходимые для правильного указания местного времени.
Я думаю, именно поэтому они создали класс DateTimeOffset, который ... если вы не понимаете, почему существует такой, казалось бы, избыточный класс ... вот почему.
В результате вы никогда не должны выполнять какие-либо вычисления для любого экземпляра DateTime, для которого не установлено значение DateTimeMode.Utc. Используйте только UTC. Вы на самом деле не можете конвертировать ни в LT, ни в LT, потому что это ПОЛУЧЕНО двумя разными ошибками, в обоих направлениях.
1. Переход от LT к UTC отключен, потому что, как уже упоминалось, он не позволяет вам указывать, действовал ли DST в течение этого одного неоднозначного часа в LT. О, это также позволяет вам указать местный час, который в принципе невозможен, например, час, который мы пропускаем, когда часы установлены заранее.
2. При преобразовании значения UTC в прошлом в местное время Windows увеличивает это значение путем смещения для перехода на летнее время в зависимости от того, действительно ли оно действует СЕЙЧАС, а не от заданного времени, которое является подлинным. Конечно, вы, возможно, заметили эту проблему, когда время изменения, которое вы записали, сохранили или использовали в имени файла, однажды показывает ОТКЛЮЧЕНИЕ ЧАСА в проводнике Windows. Нет, вы не сумасшедший, в Windows просто есть серьезная ошибка, которую они так и не нашли, чтобы исправить где-то между выпуском DOS и последней платформой .NET (~ 2 десятилетия)! Конечно, эта ошибка затрагивает системы CVS и все, что отслеживает время модификации. Файловая система FAT хранит время как местное время, что означает, что оно просто полностью сбито с толку.