каждый раз, когда я сохраняю время в базе данных, я ВСЕГДА сохраняю в UTC время
myEntity.CreateDate = DateTime.UtcNow;
Теперь, в 3.0 или меньше
используйте этот файл
http://pastebin.com/w20NRkuP
it содержит помощника , поэтому вы можете перечислить все часовые пояса и иметь их значения. Добавьте его в свою базу данных или используйте на лету.
Заполните выпадающий список и попросите пользователя выбрать собственную часовую зону , затем просто добавьте минуты к сохраненной дате UTC.
например:
<asp:DropDownList ID="myDropDown" runat="server" />
тогда
myDropDown.DataSource = Helper.ListAllTimeZones();
myDropDown.DataValueField = "UtcOffsetMinutes";
myDropDown.DataTextField = "DisplayName";
myDropDown.DataBind();
при сохранении пользовательских настроек:
User.OffSet = (int)myDropDown.SelectedValue;
надеюсь, это поможет
например, sweetie.com делает это:

просто запросите часовой пояс для пользователя и сохраните все в формате UTC, затем просто добавьте / вычтите часовой пояс.