Учитывая, что ваши клиенты могут находиться в разных часовых поясах, вы должны хранить часовой пояс для клиентов, который они (или вы) могут установить в качестве предпочтения для своей учетной записи.Сохраните все даты + время как UTC, а затем преобразуйте их в часовой пояс при отображении результатов в вашем интерфейсе.
Этот вопрос уже был в значительной степени решен в следующем вопросе: Как работать со временемзоны в ASP.NET?
Последующие действия: К сожалению, дата на сервере SQL является параметром системного уровня, поэтому на самом деле ею нельзя управлять для каждого сеанса.Похоже, вам нужно будет внести некоторые изменения в код, но вы можете их изолировать.
У вас есть переменная уровня сеанса, которая содержит смещение часового пояса клиента?Если нет, создайте его.
Создайте небольшой вспомогательный класс даты и времени.
В служебном классе предоставьте 3 метода для: (1) получить текущую дату / время (смещение часового пояса клиента) (2) передать в базу данных дату / время, чтобы вернуть смещение времени для TZ клиента.(3) пройти время от клиента, чтобы вычесть разницу TZ клиента.
Вам придется вносить изменения в код, но вы, вероятно, можете использовать эти служебные функции, чтобы обернуть входы и выходы повсюду, централизуя логику.У Microsoft есть страница о неправильных действиях, которые следует избегать при использовании класса DateTime и манипулировании часовыми поясами: http://msdn.microsoft.com/en-us/library/ms973825.aspx#datetime_topic1a