I'm writing a module that will move calendar events from another on-line calendar application into the Drupal Event module. Now that I've figured out how to create nodes from inside of a program, it's going fairly well. But I've run into a very annoying problem caused by the way that Drupal handles user time zones and time stamps. While I will be able to hack around it, this really ought to be fixed in the framework itself, since from reading the forums, it's clearly causing problems for users.
Here's a quick description of the problem. The Event module stores the start time as a Unix time number, which represents the number of seconds that have passed since January 1, 1970 GMT. The GMT (actually, UTC to be exact) is an important piece of this: if two computers running Unix are in different time zones, but are syncing to an external clock, they should be have the same number for the current time. The servers, though, have a notion of their own time zone, and use libraries to convert from the UTC time number into the current local time when they format a date for an application.
So how does Drupal (circa 4.5) deal with this?