On 2019-12-10 23:43, Guy Harris wrote:
POSIX appears not to disallow a TZ setting in which the "dst" offset is less than the "std" offset, unless I'm missing something, so, again, I'm not sure any standard forbids setting the clock *backwards* for "Daylight Saving Time".
I see this more as a problem of upward compatibility of tzdb, not of POSIX: for more than twenty years, the tzdb description in newctime.3 has guaranteed (in addition to what C and POSIX require) that "Tm_isdst is non-zero if summer time is in effect" and probably the "if" was even meant as "if and only if". This is no longer true since 2018c, but the interface description in newctime.3 was changed only in 2018f (without advert in NEWS). Some programs had relied on the old interface description, and have since adapted their functionality. For others, I do not know. For instance, the PHP date_format() function has a format specifier "I" for an indication of winter and summer time. Has the semantics of that format specifier changed? Or has it been removed? Due to the importance of tzdb, and its widespread use, even tiny changes in its external interfaces may cause compatibility problems. Using "rearguard" tzdb data can help in transitions. Michael Deckers.