every time I save time in a database I ALWAYS save in UTC time
myEntity.CreateDate = DateTime.UtcNow;
Now, in 3.0 or less
use this file
http://pastebin.com/w20NRkuP
it contains a helper so you can list all Timezones and have their values. Add it to your db or use on-the-fly.
Fill up a dropdown and ask user to choose it's own TimeZone, then, just add the Minutes to your saved UTC Date.
for example:
<asp:DropDownList ID="myDropDown" runat="server" />
then
myDropDown.DataSource = Helper.ListAllTimeZones();
myDropDown.DataValueField = "UtcOffsetMinutes";
myDropDown.DataTextField = "DisplayName";
myDropDown.DataBind();
when saving user preferences:
User.OffSet = (int)myDropDown.SelectedValue;
hope it helps
for example, sweetie.com does this:

just request the timezone to the user and save all in UTC time, then just add/subtract the timezone.