On Fri, Dec 20, 2002 at 08:59:27PM +0100, tblanchard@mac.com wrote:
Actually, I'm trying to add support for a web app and want ISO-8601 read/write support. 1997-12-17 07:37:16-08 - so the timezone is just specified as an offset [+-]hh:mm
I'm having trouble figuring out how to do this with the package (which looks good BTW).
Your local time zone is represented by "TimeZoneDatabase systemDatabase defaultTimeZone" or "LocalTimeTransform here"
The names of all time zones in your database are "TimeZoneDatabase systemDatabase timeZoneNames"
On my system, there are three timezone definitions available for Amsterdam: "TimeZoneDatabase systemDatabase timeZoneNames select: [:tz | '*Amst*' match: tz]"
For your purposes, the time zone for Amsterdam is represented by "TimeZoneDatabase systemDatabase timeZoneFor: 'Europe/Amsterdam'"
The current offset in seconds from UTC in Amsterdam is "TimeZoneDatabase systemDatabase offsetFor: 'Europe/Amsterdam' at: PointInTime now"
The current offset in seconds from UTC for your local time zone is "TimeZoneDatabase systemDatabase offsetFor: TimeZoneDatabase defaultLocation at: PointInTime now"
There is a database entry for the 'UTC' time zone, and its current offset is zero "TimeZoneDatabase systemDatabase offsetFor: 'UTC' at: PointInTime now"
I did not write any methods to do ISO 8601 formatting. If you do this, I would suggest putting them in the "converting" method category of class PointInTime, perhaps something like PointInTime>>asISO8601String.
See the class comment for PointInTime to see how "time" is being represented (it's fundamentally different from the base Time and Date classes). The class comments for LocalTimeTransform, TimeZoneRuleSet, and TimeZoneDatabase will hopefully provide a good explanation of how the rest of this mess works.
Note that I did this stuff before the TimeStamp classes existed (I think). I have not checked to see if there are any conflicts.
Patches for ISO 8601 formatting and/or merging with TimeStamp classes are welcome. Feel free to update the swiki page directly.
HTH, Dave