У меня есть приложение, в котором все DateTime всегда являются временем сервера. То есть один часовой пояс. Идея состоит в том, чтобы сделать приложение совместимым во всем мире. Первым шагом является преобразование всех сохраненных значений DateTime в базе данных в формат UTC, это не проблема. Второй шаг — принять часовой пояс для пользователя (на основе бизнес-логики) и использовать его по умолчанию для отображения и анализа пользовательского ввода. Кроме того, было бы неплохо, если бы такие методы, как DateTime.Now и другие вызовы методов, которые создают даты и время без явной информации о часовом поясе/регионе, также предполагали бы этот часовой пояс/регион.
Идея состоит в том, чтобы принять часовой пояс для пользователя из базы данных. У меня есть пользователь и его часовой пояс, это не проблема.
Проблема в логике представления. Во всем коде есть методы DateTime.now, преобразование всех этих методов требует большой работы.
Чтобы избежать этого, мне нужна глобальная настройка часового пояса, где DateTime знает, какой сейчас часовой пояс. Желательно на родовое место.
class business logic
InitializeCulture()
set time zone for user
end function
end class
class presentation logic
sample()
TimeOfTheCurrentUser = DateTime.now
end function
end class