On 1/5/24 16:50, Guy Harris wrote:
What are some examples of changes that affect STDOFF that do *not* result in transitions in a TZif file?
I don't know of any in 2023d, other than transitions governed by the TZ string (which are OK). As I understand it, this thread is about timestamps like 820454400 (1996-01-01 00:00:00 UTC) in 2023d's Europe/London. This is a no-op transition - "no-op" in the sense that tm_isdst, tm_zone, and tm_gmtoff do not change at that instant: they remain 0, "GMT", 0 respectively. In 2023d timestamps like these can appear as the last explicit timestamp in the TZif file, as a marker where the TZ string starts to govern. In 2023d's Europe/London, all timestamps from 820454400 on are governed by Europe/London's TZ string "GMT0BST,M3.5.0/1,M10.5.0". I wrote earlier that this timestamp could be omitted but I now see that I was mistaken. The previous timestamp in Europe/London is 814323600 (1995-10-22 01:00:00 UTC), a transition from BST to GMT. If we simply omitted the 820454400 transition the TZif file would become incorrect, since the file's TZ string says that 814323600 is BST, and this would disagree with what the previous timestamp transitioned to. However, the 2023d timestamp 820454400 could be replaced by any timestamp from 814928400 (1995-10-29 01:00:00 UTC) through 828233999 (1996-03-31 00:59:59 UTC) without affecting behavior visible to localtime etc. Better yet, it could be replaced by 828234000 (1996-03-31 01:00:00 UTC) so long as the corresponding transition is a real one, to BST, as opposed to being a no-op placeholder from GMT to GMT. This would be less confusing for TZif readers, because the TZif file would not contain these particular no-op transitions. (TZif files still could contain other no-op transitions, though; in some cases involving 'zic -r' they're unavoidable.) This is what Derick noted in his original email. That is, he noted that 2023c Europe/London took the "Better yet" approach mentioned above, whereas 2023d Europe/London uses a more-confusing (though still correct) transition.