[development] Re-Thinking Events in Drupal (and time zones too)
Rob Thorne
rob at torenware.com
Mon Mar 6 18:19:45 UTC 2006
Gerhard Killesreiter wrote:
>
> It is even hard using unix timestamps. Look at the bugs logged for
> event module, there is apparently still some inconsistency lurking in
> the code (or maybe people don't read the instructions).
>
There are many ways to solve any problem incorrectly :-) And if a
solution gets used incorrectly very often: arguably this is a UI problem.
>
>>
>> This is also why I'm not sure using database functions is the right
>> approach; we'll just be trading one set of problems for another.
>> But I think there's a way out of this. I've spent some time over the
>> last day or two looking at the Arthur Olsen library, and have a
>> suggestion of how to solve the DST/ST problem in a general way.
>
> Doing so will be quite hard. i just want to remind people of my
> pending patch here:
>
Easier than you think. Ultimately, the best proof of my point is to
simply implement this. I've already solved the TZif ==> SQL problem,
and have a complete SQL version of the 2006 tables. This was the piece
where I had questions of feasibility. The rest is wrapping the GMT time
functions. It really isn't any more complex than what we're doing now.
> http://drupal.org/node/11077
>
It's not a bad solution, and it's certainly better than what we were
doing before. As you point out, using UTC/GMT internally is the right
approach. But Gordon's comments are spot on: it's too simple for many
purposes, and people don't care if it does *most* of the world right if
it doesn't do their particular piece of it right.
Olson's data and much of his C routines, since it's the basis of
essentially all of the code in most modern operating systems, does it
better than anyone else.
> Anyway, I don't see why implementing DST would be harder with proper
> date formats than using timestamps. Adding or substracting one hour
> should be easy enough if you know which DST applies.
>
Let's temporarily ignore the fact that there are quite a number of DST
rules available, not all of which are in the patch.
The reason to use timestamps is so you can do binary search on a lookup
table. This is especially true because you can easily get the
"transition time" series for any time zone (i.e., geographic area with a
standard UTC offset and transition times).
Another cool reason: because if a user tell you their country, a very
simple JavaScript test on their browser will give you their exact time
zone info (check the offset at 1 January, check the offset at 1 July).
So there is a very simple AJAX solution that will make almost all of the
time zone setting UI unneeded for any user with JavaScript on (as long
as they know how to set the time on their own computer).
Rob
More information about the development
mailing list