I have a multi-timezone web application that stores all of the datetime values in UTC in the database, when actions happen on the server, I can easily convert the time into UTC.
However, when a client enters a time or time span, what is the best way to detect and store it?
I am currently doing the following:
Regardless of the actual implementation, this seems like an in-elegant solution. Does anyone have a better method?
I was doing something very similar, but I now think I prefer to use javascript to convert all times to local on the client-side. The server will give all times in UTC in the generated page, and the javascript will convert it once the page loads.
This eliminates confusion on the server-side code, as I always know what time it is (UTC). On the client-side, I'm using jquery and the each()
function to format all the time values at once. I write out each of the times as a Unix time in a hidden field to make this easy to process with jquery.
The only problems I see with this method is that:
a) I don't have a really good date/time formatting routine yet in javascript, and
b) if the user has javascript turned off, then it doesn't work.
You could use the "header" property of the HttpRequest Object to query the "If-Modified-Since" header sent by the client. This header should contain a date in a format that includes the timezone of the client, like this:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
a simple substring extraction will give you the timezone code. However, I'm afraid not all browsers are coherent in sending that header, so you should experiment a bit about it.
regards, Fabrizio
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With