On Thu, 9 Oct 2003, Oscar van Vlijmen wrote:
Some non-Unix and even non-C developers would like to use the timezone data, but they cannot find nor read the documentation.
If anyone's interested, I've implemented a Perl module that provides a Perl API to the timezone database. It parses the source text files and generates Perl modules, rather than simply overlaying the C API, for a number of reasons. The main reason was that I wanted this to work outside the bounds of the epoch, so using native time_t values wouldn't work. Anyway, the module is called DateTime::TimeZone, and is at http://search.cpan.org/dist/DateTime-TimeZone/. It's part of a larger project to provide decent date/time support for Perl. More info on the project can be found at datetime.perl.org. BTW, writing a parser for the TZ data was a bit of a nightmare, as the interrelations between observance changes and rules make it very complex to figure out what rule is in effect at any given time. I don't know if there's a better way to represent this data, but explaining _how_ to do this to someone who wants to write a parser is non-trivial. The zic.8 file doesn't really explain the "how", just the "what". Also, to make sure I was doing this correctly, I wrote some code to generate tests based on zdump's output. This is a script in the DateTime::TimeZone distro called tools/tests_from_zdump. People working on providing a non-C API may find this script useful, as it generates comprehensive tests for _every_ zone for _every_ change that zdump outputs. It could easily be adapted to generate tests for a different language's API. -dave /*======================= House Absolute Consulting www.houseabsolute.com =======================*/