2009-10-06 00:19:31 UTC
ICI's date/time function is calendar() which is essentially a thin wrapper atop C's localtime() function. The "struct tm" that localtime fills in does not have timezone information. Now calendar() should arguably provide this information so we need some hopefully portable way to get it.
BSD systems do have timezone information in their struct tm and glibc seems to support that to (I haven't tried it but have just looked at the headers on an Ubuntu system I have around the place). I'm not sure what Windows does - I don't have any Windows machines handy.
Anyway I'd argue the BSD struct tm is the one to copy and add its members to the struct calendar() returns with suitable emulation on other platforms. This means,
a) add two members to calendar()'s result - "zone", a string, that defines the name of the timezone and "gmtoff" which is the offset, in seconds, from UTC.
b) figuring out how to do this on different systems.
In the short-term it likely depends which platform you're interested in. A module that provides the information wouldn't be hard to add.