> It would not be too hard to convert from tz to MS reg data to provide correct times in earlier years.

Actually, it's quite a pain.  The registry format presumes there are always exactly either zero or two DST transitions in every year.  All kinds of workarounds are in place to deal with edge cases like standard time changing mid-year or DST ending permanently, etc.  Not to mention time zones with 3 or 4 transitions, such as for Ramadan - which the OS has to handle special.

Also, you'll find that the decisions about which time zones are grouped together start to get fuzzy as you go back in time.  If you were to try to fill in the older data for all entries, you'd eventually encounter two differing IANA zones that are grouped under the same Windows zone, and you'd need a new Windows zone to split them apart.  The 1970 rule we have in tzdata is 2010 in the Windows data.


On Fri, Oct 7, 2022 at 11:03 AM Brian Inglis via tz <tz@iana.org> wrote:
On 2022-10-06 14:25, Brooks Harris via tz wrote:
> On 2022-10-06 4:07 PM, Paul Eggert wrote:

>> Yes, as I understand it Microsoft Windows 8.1 and later has data
>> derived from tzdb in its Windows Runtime / Universal Windows Platform
>> classes.

Uses MS port of tz code/data for UWP Store apps.

> The time zone information resides in the Windows Registry, at
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Used by native MS Windows libraries and apps: MS do their own thing
here. It would not be too hard to convert from tz to MS reg data to
provide correct times in earlier years.

Windows dynamic time zones may have been added to support the EU 2006
and/or US 2007 changes, and new data is now added for other zones.
The earliest dynamic zone I can find is for Cuba 2003.

Base data is static current e.g. Cuba Standard Time

Display (REG_SZ) = "(UTC-05:00) Havana"
Std (REG_SZ) = "Cuba Standard Time"
Dlt (REG_SZ) = "Cuba Summer Time"
MUI_Display (REG_SZ) = "@tzres.dll,-2430"
MUI_Dlt (REG_SZ) = "@tzres.dll,-2431"
MUI_Std (REG_SZ) = "@tzres.dll,-2432"
TZI (REG_BINARY) = 2c 01 00 00 00 00 00 00

but some zones also support 'Dynamic DST' e.g.

FirstEntry (REG_DWORD) = 0x000007d3 (2003)
LastEntry (REG_DWORD) = 0x000007dd (2013)
2003 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2004 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2005 (REG_BINARY) = f0 00 00 00 00 00 00 00
2006 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2007 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2008 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2009 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2010 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2011 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2012 (REG_BINARY) = 2c 01 00 00 00 00 00 00
2013 (REG_BINARY) = 2c 01 00 00 00 00 00 00

--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]