Myself, I store all dates as GMT time. Always.
In SQL this means using getUTCDate() instead of getDate()
Then when I present dates to users I use JavaScript (client side) to automatically calculate the dates to local time based on their local computer settings.
This function is an example of how you can determine the timezone offset and whether or not the user is observing Summer Time (aka "Daylight Savings Time")
Code:
function checkTimeZone() {
var rightNow = new Date();
var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
var temp = date1.toGMTString();
var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var temp = date2.toGMTString();
var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);
if (hoursDiffDaylightTime == hoursDiffStdTime) {
alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is NOT observed here.");
} else {
alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is observed here.");
}
}
I make it complicated for a good reason. Browser versions differ in their calculation for time zone offsets. It took me 3 months using over 15 different popular browsers and versions and each and every one of them returned different values. The script above works the same for any browser I tested.
This script should get you pointed in the right direction.
Hope it helps.
Regards,
Charles Forsyth