Ответ 1
Часовые пояса могут быть одним из трех разных типов в объектах DateTime:
- Тип 1; Смещение UTC, например, в
new DateTime("17 July 2013 -0300");
- Тип 2; Сокращение часового пояса, например, в
new DateTime("17 July 2013 GMT");
- Тип 3: идентификатор часового пояса, например,
new DateTime( "17 July 2013", new DateTimeZone("Europe/London"));
Только объекты DateTime с прикрепленными временными часами типа 3 позволят правильно выполнять DST.
Чтобы всегда иметь тип 3, вам нужно будет сохранить часовой пояс в своей базе данных как принятые идентификаторы из этот список и применить его к своей Объект DateTime при создании экземпляра.