Ответ 1
Это локальный часовой пояс компьютера, на котором работает код. В приложении ASP.Net код запускается на сервере - так, чтобы часовой пояс был возвращен.
Поведение этой функции фактически зависит от свойства .Kind
исходного значения. Из ссылка MSDN, которую вы указали:
- Utc. Этот экземпляр
DateTime
преобразуется в локальное время. - Локальный. Преобразование не выполняется.
- Unspecified. Этот экземпляр
DateTime
считается временем UTC, а преобразование выполняется так, как будто Kind были Utc.
Это неочевидное поведение. Вы можете прочитать другие связанные проблемы с классом .net DateTime
здесь и .
Несколько других точек:
- Если вы следуете лучшим практикам, вы установите часовой пояс сервера в формате UTC.
- Если вы пытаетесь отобразить время в пользовательском часовом поясе, вам нужно будет использовать одну из этих стратегий.