----- Original Message -----
From: "Lester Caine" <lester@xxxxxxxxxxx>
To: <php-general@xxxxxxxxxxxxx>
Sent: Tuesday, April 10, 2007 4:37 PM
Subject: Re: Dates and different time zones
Satyam wrote:
Store all of your dates as GMT. Perform all date based calculations
around GMT also, and then offset the values for localised display only.
This way you only need to store the GMT offsets for each user, i.e.
GMT+1 or GMT-8 when it comes to displaying the dates to them. The trick
is to use a constant base date for all data, and only being the user
timezones into play when needed.
Actually, I find that it is better not to bother storing anything for the
user at all. At the first chance, get some JavaScript to read the local
time of the client machine and send it back to the server, either with
the login data, using some AJAX or along with any link the user might
click on the welcome screen, for example, the language choice. Then use
the offset from his local time to the server time for every time
information, substract it from any time information you read from them,
add it to anything you send them. This works whether the user is
registered or not, whether he/she travels or remains in the same time
zone and spares you the trouble of keeping your IP to country to timezone
table updated. It assumes that the user updates the time zone on his/her
machine and if he doesn't it means she doesn't care, so why should you.
(some travellers prefer to keep their portable machines set to their
home-base time zone)
Of cause the major fault with this is that it can only display the CURRENT
time offset. You *ALSO* need the users Daylight Saving Zone as well. This
has been giving us great fun since the winter dates and times need a
different offset to the summer ones. Something that simplistic browser
time offset does not supply. :(
The point is that you don't store the time offset in any user profile or
anywhere but a session variable, which you keep for the duration of the
session so it lasts only while the user is connected, whether logged in or
not, profile or not. Next time he/she connects you get the new offset. If
the time has changed due to daylight savings or the user travelling
elsewhere, you'll get a new offset.
The only time it fails is if the user is connected while the time switch is
happening, but so will most of the clocks, watches and whatever is on at the
time.
Satyam
The only way to get this working properly at present is to get the user to
set their time/daylight settings in their profile, and then you can
provide the correct offset for all days on a calendar. Remember that for
users WITH a daylight saving offset, one day each year has 23 hours and
one 25 hours ;)
--
Lester Caine - G8HFL
-----------------------------
Contact - http://home.lsces.co.uk/lsces/wiki/?page=contact
L.S.Caine Electronic Services - http://home.lsces.co.uk
MEDW - http://home.lsces.co.uk/ModelEngineersDigitalWorkshop/
Treasurer - Firebird Foundation Inc. -
http://www.firebirdsql.org/index.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 269.0.0/754 - Release Date: 09/04/2007
22:59
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php