On Jan 6, 2024, at 8:34 AM, Michael H Deckers via tz <tz@iana.org> wrote:
Yes, there is information on local civil times scales needed by many datetime software interfaces that is already present in the tzdb source files but that is missing from the TZif files since the very beginning:
• the SAVE value (or the numeric RULES value) applicable at an instant is not available via TZif files, and cannot in general be deduced from its contents (see eg the SAVE value +01 h for Europe/Dublin when UT = 1916-10-01 + 02:25:21.1). It has even become more difficult to guess these values from TZif files since they are allowed to be negative.
I.e., TZif files: https://datatracker.ietf.org/doc/html/rfc8536 don't contain enough information to allow both STDOFF and SAVE to be derived for a given time value. We could provide a version 5, with a version 5 data block that does contain that information. (RFC 8536 doesn't describe version 4; the tzfile(5) man page describes it as For version-4-format TZif files, the first leap second record can have a correction that is neither +1 nor -1, to represent truncation of the TZif file at the start. Also, if two or more leap second transitions are present and the last entry's correction equals the previous one, the last entry denotes the expiration of the leap second table instead of a leap second; timestamps after this expiration are unreliable in that future releases will likely add leap second entries after the expiration, and the added leap seconds will change how post-expiration timestamps are treated.
• the RULEs applicable at a specific instant (if any). They are available in TZif files (in versions 2 and 3) only for recent instants, and the start of their applicability is only given indirectly in TZif files, sometimes requiring a redundant transition (which is the topic of this thread).
So how does software (other than zic, of course :-)) use the rules rather than just the transition times calculated from the rules?
I think it would be very useful to have an official output of the tzdb data compilation process (zic and associated tools) that makes these data available for datetime software, even though they are not needed by the POSIX datetime functions.
Yes, there is no inherent reason why the TZif format, for example, should limit itself to supporting only the date/time functions that POSIX and the C standard currently happen to provide.