On Fri, 31 Oct 2014, Ed Schouten wrote:
While writing a Python script to translate the data, I noticed that there is a very small number of directives that would require quite a lot of additional code to parse properly. For example, "lastSun" makes a lot of sense as a special keyword in "Rule" directives, but it provides no functional gain in "Zone" directives.
You can translate "lastSun" to a specific date during the conversion from tzdata's text format to your binary format. Then you would not need to do it in the embedded code that parses your binary format.
The same holds for the use of the "Dec 29 24:00" time used in Samoa's timezone. We should be able to use "Dec 30" instead, right?
Even if you can get it to work, I would advise against trying to write "Dec 30" in any rules for Samoa in 2011. There was no 30 December 2011 in Samoa, because at midnight at the end of 29 December 2011, their clockes jumped ahead 24 hours to the midnight at the beginning of 31 December. Ordinarily (but not in Samoa in 2011), "Dec 29 24:00" and "Dec 30 00:00" would mean the same thing, and you could translate between them when you create your binary data. However, "Dec 30" with an unspecified time is supposed to mean "an unknown time on 30 December", and tzdata uses this style when the exact time of a transition is unknown. --apb (Alan Barrett)