I wrote:
> Thanks!  I'll check this and put together a finished patch.

So after a few minutes trying to compare information presented in
several different formats, I got frustrated enough to decide that some
automation is in order.  If we are taking CLDR's data as gospel from
here on out, let's just make a script to generate what findtimezone.c
needs from CLDR's windowsZones.xml.  A little while later I had the
attached patch series.  This doesn't represent total automation, as
it expects you to run the new Perl script by hand, and you're still
responsible for moving obsoleted entries somewhere else by hand.
But given that we shouldn't need to run this very often, I figured
that addressing those things would be well past the point of
diminishing returns.

The new data that I generated this way agrees with CyberNative's
conclusions, except that there are some differences in the comment
lines, which is perhaps unsurprising since those are human-generated.
I also notice that the win32tzlist.out file that David sent has
differences that seem to amount to comment-line differences, but
I'm not really sure where that data is coming from on the Windows
side.

                        regards, tom lane

From 509fc72ea93dbdac6294c00eb421c368cf981764 Mon Sep 17 00:00:00 2001
From: Tom Lane <[email protected]>
Date: Mon, 19 Oct 2026 20:44:48 -0400
Subject: [PATCH v1 1/3] findtimezone: separate old Windows zone names from
 current ones.

In preparation for generating the Windows zone name mapping list
from CLDR data, separate out the legacy names we're carrying and
move them to the end of the list.  This commit does not change
any behavior, merely re-order the array.

Author: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 14
---
 src/bin/initdb/findtimezone.c | 234 ++++++++++++++++++----------------
 1 file changed, 123 insertions(+), 111 deletions(-)

diff --git a/src/bin/initdb/findtimezone.c b/src/bin/initdb/findtimezone.c
index c7e8ff6d40b..9912484d64f 100644
--- a/src/bin/initdb/findtimezone.c
+++ b/src/bin/initdb/findtimezone.c
@@ -771,11 +771,6 @@ static const struct
 		"Argentina Standard Time", "Argentina Daylight Time",
 		"America/Buenos_Aires"
 	},
-	{
-		/* (UTC+04:00) Baku, Tbilisi, Yerevan */
-		"Armenian Standard Time", "Armenian Daylight Time",
-		"Asia/Yerevan"
-	},
 	{
 		/* (UTC+04:00) Astrakhan, Ulyanovsk */
 		"Astrakhan Standard Time", "Astrakhan Daylight Time",
@@ -831,11 +826,6 @@ static const struct
 		"Bougainville Standard Time", "Bougainville Daylight Time",
 		"Pacific/Bougainville"
 	},
-	{
-		/* (UTC-01:00) Cabo Verde Is. */
-		"Cabo Verde Standard Time", "Cabo Verde Daylight Time",
-		"Atlantic/Cape_Verde"
-	},
 	{
 		/* (UTC-06:00) Saskatchewan */
 		"Canada Central Standard Time", "Canada Central Daylight Time",
@@ -906,11 +896,6 @@ static const struct
 		"China Standard Time", "China Daylight Time",
 		"Asia/Shanghai"
 	},
-	{
-		/* (UTC) Coordinated Universal Time */
-		"Coordinated Universal Time", "Coordinated Universal Time",
-		"UTC"
-	},
 	{
 		/* (UTC-05:00) Havana */
 		"Cuba Standard Time", "Cuba Daylight Time",
@@ -1033,11 +1018,6 @@ static const struct
 		"Israel Standard Time", "Israel Daylight Time",
 		"Asia/Jerusalem"
 	},
-	{
-		/* (UTC+02:00) Jerusalem (old spelling of zone name) */
-		"Jerusalem Standard Time", "Jerusalem Daylight Time",
-		"Asia/Jerusalem"
-	},
 	{
 		/* (UTC+02:00) Amman */
 		"Jordan Standard Time", "Jordan Daylight Time",
@@ -1048,11 +1028,6 @@ static const struct
 		"Kaliningrad Standard Time", "Kaliningrad Daylight Time",
 		"Europe/Kaliningrad"
 	},
-	{
-		/* (UTC+12:00) Petropavlovsk-Kamchatsky - Old */
-		"Kamchatka Standard Time", "Kamchatka Daylight Time",
-		"Asia/Kamchatka"
-	},
 	{
 		/* (UTC+09:00) Seoul */
 		"Korea Standard Time", "Korea Daylight Time",
@@ -1083,11 +1058,6 @@ static const struct
 		"Magallanes Standard Time", "Magallanes Daylight Time",
 		"America/Punta_Arenas"
 	},
-	{
-		/* (UTC+08:00) Kuala Lumpur, Singapore */
-		"Malay Peninsula Standard Time", "Malay Peninsula Daylight Time",
-		"Asia/Kuala_Lumpur"
-	},
 	{
 		/* (UTC-09:30) Marquesas Islands */
 		"Marquesas Standard Time", "Marquesas Daylight Time",
@@ -1098,21 +1068,6 @@ static const struct
 		"Mauritius Standard Time", "Mauritius Daylight Time",
 		"Indian/Mauritius"
 	},
-	{
-		/* (UTC-06:00) Guadalajara, Mexico City, Monterrey */
-		"Mexico Standard Time", "Mexico Daylight Time",
-		"America/Mexico_City"
-	},
-	{
-		/* (UTC-07:00) Chihuahua, La Paz, Mazatlan */
-		"Mexico Standard Time 2", "Mexico Daylight Time 2",
-		"America/Chihuahua"
-	},
-	{
-		/* (UTC-02:00) Mid-Atlantic - Old */
-		"Mid-Atlantic Standard Time", "Mid-Atlantic Daylight Time",
-		"Atlantic/South_Georgia"
-	},
 	{
 		/* (UTC+02:00) Beirut */
 		"Middle East Standard Time", "Middle East Daylight Time",
@@ -1188,11 +1143,6 @@ static const struct
 		"North Korea Standard Time", "North Korea Daylight Time",
 		"Asia/Pyongyang"
 	},
-	{
-		/* (UTC+07:00) Novosibirsk */
-		"Novosibirsk Standard Time", "Novosibirsk Daylight Time",
-		"Asia/Novosibirsk"
-	},
 	{
 		/* (UTC+06:00) Omsk */
 		"Omsk Standard Time", "Omsk Daylight Time",
@@ -1233,11 +1183,6 @@ static const struct
 		"Romance Standard Time", "Romance Daylight Time",
 		"Europe/Paris"
 	},
-	{
-		/* (UTC+04:00) Izhevsk, Samara */
-		"Russia Time Zone 3", "Russia Time Zone 3",
-		"Europe/Samara"
-	},
 	{
 		/* (UTC+11:00) Chokurdakh */
 		"Russia Time Zone 10", "Russia Time Zone 10",
@@ -1248,61 +1193,11 @@ static const struct
 		"Russia Time Zone 11", "Russia Time Zone 11",
 		"Asia/Kamchatka"
 	},
-	{
-		/* (UTC+02:00) Kaliningrad */
-		"Russia TZ 1 Standard Time", "Russia TZ 1 Daylight Time",
-		"Europe/Kaliningrad"
-	},
-	{
-		/* (UTC+03:00) Moscow, St. Petersburg */
-		"Russia TZ 2 Standard Time", "Russia TZ 2 Daylight Time",
-		"Europe/Moscow"
-	},
 	{
 		/* (UTC+04:00) Izhevsk, Samara */
-		"Russia TZ 3 Standard Time", "Russia TZ 3 Daylight Time",
+		"Russia Time Zone 3", "Russia Time Zone 3",
 		"Europe/Samara"
 	},
-	{
-		/* (UTC+05:00) Ekaterinburg */
-		"Russia TZ 4 Standard Time", "Russia TZ 4 Daylight Time",
-		"Asia/Yekaterinburg"
-	},
-	{
-		/* (UTC+06:00) Novosibirsk (RTZ 5) */
-		"Russia TZ 5 Standard Time", "Russia TZ 5 Daylight Time",
-		"Asia/Novosibirsk"
-	},
-	{
-		/* (UTC+07:00) Krasnoyarsk */
-		"Russia TZ 6 Standard Time", "Russia TZ 6 Daylight Time",
-		"Asia/Krasnoyarsk"
-	},
-	{
-		/* (UTC+08:00) Irkutsk */
-		"Russia TZ 7 Standard Time", "Russia TZ 7 Daylight Time",
-		"Asia/Irkutsk"
-	},
-	{
-		/* (UTC+09:00) Yakutsk */
-		"Russia TZ 8 Standard Time", "Russia TZ 8 Daylight Time",
-		"Asia/Yakutsk"
-	},
-	{
-		/* (UTC+10:00) Vladivostok */
-		"Russia TZ 9 Standard Time", "Russia TZ 9 Daylight Time",
-		"Asia/Vladivostok"
-	},
-	{
-		/* (UTC+11:00) Chokurdakh */
-		"Russia TZ 10 Standard Time", "Russia TZ 10 Daylight Time",
-		"Asia/Magadan"
-	},
-	{
-		/* (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky */
-		"Russia TZ 11 Standard Time", "Russia TZ 11 Daylight Time",
-		"Asia/Anadyr"
-	},
 	{
 		/* (UTC+03:00) Moscow, St. Petersburg */
 		"Russian Standard Time", "Russian Daylight Time",
@@ -1518,11 +1413,6 @@ static const struct
 		"West Asia Standard Time", "West Asia Daylight Time",
 		"Asia/Tashkent"
 	},
-	{
-		/* (UTC+02:00) Gaza, Hebron */
-		"West Bank Gaza Standard Time", "West Bank Gaza Daylight Time",
-		"Asia/Gaza"
-	},
 	{
 		/* (UTC+02:00) Gaza, Hebron */
 		"West Bank Standard Time", "West Bank Daylight Time",
@@ -1543,6 +1433,128 @@ static const struct
 		"Yukon Standard Time", "Yukon Daylight Time",
 		"America/Whitehorse"
 	},
+
+	/*
+	 * END of CLDR-derived entries
+	 */
+
+	/*
+	 * Obsolete zones, or just obsolete spellings of their names. These are no
+	 * longer derivable from CLDR, but should be kept to support older Windows
+	 * installations.
+	 */
+
+	{
+		/* (UTC+04:00) Baku, Tbilisi, Yerevan */
+		"Armenian Standard Time", "Armenian Daylight Time",
+		"Asia/Yerevan"
+	},
+	{
+		/* (UTC-01:00) Cabo Verde Is. */
+		"Cabo Verde Standard Time", "Cabo Verde Daylight Time",
+		"Atlantic/Cape_Verde"
+	},
+	{
+		/* (UTC) Coordinated Universal Time */
+		"Coordinated Universal Time", "Coordinated Universal Time",
+		"UTC"
+	},
+	{
+		/* (UTC+02:00) Jerusalem */
+		"Jerusalem Standard Time", "Jerusalem Daylight Time",
+		"Asia/Jerusalem"
+	},
+	{
+		/* (UTC+12:00) Petropavlovsk-Kamchatsky */
+		"Kamchatka Standard Time", "Kamchatka Daylight Time",
+		"Asia/Kamchatka"
+	},
+	{
+		/* (UTC+08:00) Kuala Lumpur, Singapore */
+		"Malay Peninsula Standard Time", "Malay Peninsula Daylight Time",
+		"Asia/Kuala_Lumpur"
+	},
+	{
+		/* (UTC-06:00) Guadalajara, Mexico City, Monterrey */
+		"Mexico Standard Time", "Mexico Daylight Time",
+		"America/Mexico_City"
+	},
+	{
+		/* (UTC-07:00) Chihuahua, La Paz, Mazatlan */
+		"Mexico Standard Time 2", "Mexico Daylight Time 2",
+		"America/Chihuahua"
+	},
+	{
+		/* (UTC-02:00) Mid-Atlantic */
+		"Mid-Atlantic Standard Time", "Mid-Atlantic Daylight Time",
+		"Atlantic/South_Georgia"
+	},
+	{
+		/* (UTC+07:00) Novosibirsk */
+		"Novosibirsk Standard Time", "Novosibirsk Daylight Time",
+		"Asia/Novosibirsk"
+	},
+	{
+		/* (UTC+02:00) Kaliningrad */
+		"Russia TZ 1 Standard Time", "Russia TZ 1 Daylight Time",
+		"Europe/Kaliningrad"
+	},
+	{
+		/* (UTC+03:00) Moscow, St. Petersburg */
+		"Russia TZ 2 Standard Time", "Russia TZ 2 Daylight Time",
+		"Europe/Moscow"
+	},
+	{
+		/* (UTC+04:00) Izhevsk, Samara */
+		"Russia TZ 3 Standard Time", "Russia TZ 3 Daylight Time",
+		"Europe/Samara"
+	},
+	{
+		/* (UTC+05:00) Ekaterinburg */
+		"Russia TZ 4 Standard Time", "Russia TZ 4 Daylight Time",
+		"Asia/Yekaterinburg"
+	},
+	{
+		/* (UTC+06:00) Novosibirsk (RTZ 5) */
+		"Russia TZ 5 Standard Time", "Russia TZ 5 Daylight Time",
+		"Asia/Novosibirsk"
+	},
+	{
+		/* (UTC+07:00) Krasnoyarsk */
+		"Russia TZ 6 Standard Time", "Russia TZ 6 Daylight Time",
+		"Asia/Krasnoyarsk"
+	},
+	{
+		/* (UTC+08:00) Irkutsk */
+		"Russia TZ 7 Standard Time", "Russia TZ 7 Daylight Time",
+		"Asia/Irkutsk"
+	},
+	{
+		/* (UTC+09:00) Yakutsk */
+		"Russia TZ 8 Standard Time", "Russia TZ 8 Daylight Time",
+		"Asia/Yakutsk"
+	},
+	{
+		/* (UTC+10:00) Vladivostok */
+		"Russia TZ 9 Standard Time", "Russia TZ 9 Daylight Time",
+		"Asia/Vladivostok"
+	},
+	{
+		/* (UTC+11:00) Chokurdakh */
+		"Russia TZ 10 Standard Time", "Russia TZ 10 Daylight Time",
+		"Asia/Magadan"
+	},
+	{
+		/* (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky */
+		"Russia TZ 11 Standard Time", "Russia TZ 11 Daylight Time",
+		"Asia/Anadyr"
+	},
+	{
+		/* (UTC+02:00) Gaza, Hebron */
+		"West Bank Gaza Standard Time", "West Bank Gaza Daylight Time",
+		"Asia/Gaza"
+	},
+
 	{
 		NULL, NULL, NULL
 	}
-- 
2.52.0

From 1b03928b9bab2073579048fe501ce71da3bc6e82 Mon Sep 17 00:00:00 2001
From: Tom Lane <[email protected]>
Date: Mon, 19 Oct 2026 21:13:40 -0400
Subject: [PATCH v1 2/3] Create infrastructure for building Windows zone name
 mapping list.

As of commit c1aa3b3c0, we adopted a policy of just following
CLDR's data for mapping Windows timezone display names to TZDB
zone names.  That being the case, let's avoid tedious manual
comparison of CLDR's windowsZones.xml to findtimezone.c by writing
a script to generate the desired constant data from windowsZones.xml.
This commit introduces the script and revises src/timezone/README
to describe using it rather than doing manual comparisons.

Author: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 14
---
 src/timezone/README          |  23 +++---
 src/tools/gen_win32_tzmap.pl | 138 +++++++++++++++++++++++++++++++++++
 2 files changed, 151 insertions(+), 10 deletions(-)
 create mode 100644 src/tools/gen_win32_tzmap.pl

diff --git a/src/timezone/README b/src/timezone/README
index 0d48193d021..361f7244ff7 100644
--- a/src/timezone/README
+++ b/src/timezone/README
@@ -46,16 +46,19 @@ as a cross-check on proposed updates.
 
 When there has been a new release of Windows (probably including Service
 Packs), findtimezone.c's mapping from Windows zones to IANA zones may
-need to be updated.  We have two approaches to doing this:
-1. Consult the CLDR project's windowsZones.xml file, and add any zones
-   listed there that we don't have.  Use their "territory=001" mapping
-   if there's more than one IANA zone listed.
-2. Run the script in src/tools/win32tzlist.pl on a Windows machine
-   running the new release, and add any new timezones that it detects.
-   (This is not a full substitute for #1, though, as win32tzlist.pl
-   can't tell you which IANA zone to map to.)
-In either case, never remove any zone names that have disappeared from
-Windows, since we still need to match properly on older versions.
+need to be updated.  We now base that mapping on data maintained by CLDR.
+Obtain the CLDR project's windowsZones.xml file, and run it through
+src/tools/gen_win32_tzmap.pl to obtain a list of current Windows zone names.
+Compare that to the win32_tzmap[] array in src/bin/initdb/findtimezone.c.
+Insert or update entries as necessary, but never remove any zone names
+that have disappeared from Windows, since we still need to match properly
+on older versions.  Instead, move those entries to the list of legacy
+names at the end of the array.  (Multiple array entries mapping to the
+same tzdb zone is not a problem.)
+
+A helpful cross-check on the win32_tzmap[] array is to run the script
+in src/tools/win32tzlist.pl on a Windows machine to see if it detects
+any discrepancies.
 
 
 Time Zone code
diff --git a/src/tools/gen_win32_tzmap.pl b/src/tools/gen_win32_tzmap.pl
new file mode 100644
index 00000000000..ed5954ae205
--- /dev/null
+++ b/src/tools/gen_win32_tzmap.pl
@@ -0,0 +1,138 @@
+#----------------------------------------------------------------------
+#
+# gen_win32_tzmap.pl
+#	Perl script that transforms the CLDR windowsZones.xml file into
+#	suitable entries for findtimezone.c's win32_tzmap[] array.
+#
+# The input is an XML file containing entries like
+#   <!-- (UTC-12:00) International Date Line West -->
+#   <mapZone other="Dateline Standard Time" territory="001" type="Etc/GMT+12"/>
+# as well as some other lines that we ignore.  (This is far from being a
+# full XML parser, as CLDR is sufficiently rigid about their data layout
+# that we don't need that.)  We ignore entries that aren't for territory 001.
+#
+# The output is a fragment of C with entries like
+#	{
+#		/* (UTC-12:00) International Date Line West */
+#		"Dateline Standard Time", "Dateline Daylight Time",
+#		"Etc/GMT+12"
+#	},
+# This can be merged into findtimezone.c; however, don't just blindly
+# replace the contents of the win32_tzmap[] array.  We don't want to
+# drop any obsolete Windows zone names, since initdb might get run on
+# a machine whose timezone registry isn't up to date.  Therefore, check
+# for zone names that are no longer present, and move those entries to
+# the bottom of the array.
+#
+# To ease making that check manually, the output of this program is
+# sorted by Windows zone name by default.
+#
+#
+# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/tools/gen_win32_tzmap.pl
+#
+#----------------------------------------------------------------------
+
+use strict;
+use warnings FATAL => 'all';
+use Getopt::Long;
+
+my $output_file = 'tzmap.tmp.c';
+my $sort_rule = 'stdname';
+
+GetOptions(
+	'output:s' => \$output_file,
+	'sort:s' => \$sort_rule) || usage();
+
+my $cldr_input_file = shift @ARGV || die "No input file.\n";
+
+open(my $xmlif, '<', $cldr_input_file) || die "$cldr_input_file: $!\n";
+open(my $outfile, '>', $output_file) || die "$output_file: $!\n";
+
+# Parse input file to extract data.
+my @timezones;
+my $last_comment = '';
+my $okay = 1;
+while (<$xmlif>)
+{
+	if (/^\s*<!-- (.*?) -->/)
+	{
+		$last_comment = $1;
+	}
+	elsif (/^\s*<mapZone/)
+	{
+		if (m|^\s*<mapZone\s+other="(.*)"\s+territory="(.*)"\s+type="(.*)"/>\s*$|
+		  )
+		{
+			my $stdname = $1;
+			my $territory = $2;
+			my $zone = $3;
+			next if $territory ne "001";
+			# print "$stdname => $zone ($last_comment)\n";
+			push @timezones,
+			  {
+				stdname => $stdname,
+				zone => $zone,
+				comment => $last_comment
+			  };
+		}
+		else
+		{
+			print "unintelligible mapZone: $_";
+			$okay = 0;
+		}
+		$last_comment = '';
+	}
+	elsif (!m/^\s*$/)
+	{
+		# useful for debugging:
+		# print "ignoring line: $_";
+	}
+}
+
+exit 1 unless $okay;
+
+if ($sort_rule eq 'stdname')
+{
+	@timezones = sort { lc($a->{stdname}) cmp lc($b->{stdname}) } @timezones;
+}
+elsif ($sort_rule eq 'zone')
+{
+	@timezones = sort { $a->{zone} cmp $b->{zone} } @timezones;
+}
+elsif ($sort_rule eq 'comment')
+{
+	@timezones = sort { $a->{comment} cmp $b->{comment} } @timezones;
+}
+
+for my $timezone (@timezones)
+{
+	my $stdname = ${$timezone}{'stdname'};
+	my $dayname = $stdname;
+	$dayname =~ s/Standard/Daylight/;
+	my $zone = ${$timezone}{'zone'};
+	my $comment = ${$timezone}{'comment'};
+
+	print $outfile "\t{\n";
+	print $outfile "\t\t/* $comment */\n";
+	print $outfile "\t\t\"$stdname\", \"$dayname\",\n";
+	print $outfile "\t\t\"$zone\"\n";
+	print $outfile "\t},\n";
+}
+
+exit 0;
+
+
+sub usage
+{
+	die <<EOM;
+Usage: gen_win32_tzmap.pl [--output/-o <file>] [--sort/-s <rule>] input_file
+    --output        Output file (default 'tzmap.tmp.c')
+    --sort          Sort rule: stdname,zone,comment,none (default 'stdname')
+
+gen_win32_tzmap.pl transforms windowsZones.xml into constant data
+for findtimezone.c.
+EOM
+}
-- 
2.52.0

From 4fd02e021654858847ddb6bc3292ca25432ba122 Mon Sep 17 00:00:00 2001
From: Tom Lane <[email protected]>
Date: Mon, 19 Oct 2026 21:22:12 -0400
Subject: [PATCH v1 3/3] findtimezone: update Windows zone name list for recent
 events.

This commit inserts the zone name list generated by
gen_win32_tzmap.pl from the current windowsZones.xml file.
The important changes are addition of new zone names for
Canada's upcoming timekeeping changes.  In addition, this
tracks a few minor changes that CLDR has made in other entries.

Reported-by: CyberNative AI <[email protected]>
Author: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 14
---
 src/bin/initdb/findtimezone.c | 41 +++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/src/bin/initdb/findtimezone.c b/src/bin/initdb/findtimezone.c
index 9912484d64f..adec2b48e25 100644
--- a/src/bin/initdb/findtimezone.c
+++ b/src/bin/initdb/findtimezone.c
@@ -722,14 +722,9 @@ static const struct
 
 {
 	/*
-	 * This list was built from the contents of the registry at
-	 * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time
-	 * Zones on Windows 7, Windows 10, and Windows Server 2019.  Some recent
-	 * additions have been made by comparing to the CLDR project's
-	 * windowsZones.xml file.
-	 *
-	 * The zones have been matched to IANA timezones based on CLDR's mapping
-	 * for "territory 001".
+	 * The contents of this array are mostly generated from the CLDR project's
+	 * windowsZones.xml file, using src/tools/gen_win32_tzmap.pl.  See
+	 * src/timezone/README for more information.
 	 */
 	{
 		/* (UTC+04:30) Kabul */
@@ -741,6 +736,11 @@ static const struct
 		"Alaskan Standard Time", "Alaskan Daylight Time",
 		"America/Anchorage"
 	},
+	{
+		/* (UTC-07:00) Alberta */
+		"Alberta Standard Time", "Alberta Daylight Time",
+		"America/Edmonton"
+	},
 	{
 		/* (UTC-10:00) Aleutian Islands */
 		"Aleutian Standard Time", "Aleutian Daylight Time",
@@ -826,13 +826,18 @@ static const struct
 		"Bougainville Standard Time", "Bougainville Daylight Time",
 		"Pacific/Bougainville"
 	},
+	{
+		/* (UTC-07:00) British Columbia */
+		"British Columbia Standard Time", "British Columbia Daylight Time",
+		"America/Vancouver"
+	},
 	{
 		/* (UTC-06:00) Saskatchewan */
 		"Canada Central Standard Time", "Canada Central Daylight Time",
 		"America/Regina"
 	},
 	{
-		/* (UTC-01:00) Cape Verde Is. */
+		/* (UTC-01:00) Cabo Verde Is. */
 		"Cape Verde Standard Time", "Cape Verde Daylight Time",
 		"Atlantic/Cape_Verde"
 	},
@@ -854,7 +859,7 @@ static const struct
 	{
 		/* (UTC+06:00) Astana */
 		"Central Asia Standard Time", "Central Asia Daylight Time",
-		"Asia/Almaty"
+		"Asia/Bishkek"
 	},
 	{
 		/* (UTC-04:00) Cuiaba */
@@ -977,13 +982,6 @@ static const struct
 		"America/Godthab"
 	},
 	{
-		/*
-		 * Windows uses this zone name in various places that lie near the
-		 * prime meridian, but are not in the UK.  However, most people
-		 * probably think that "Greenwich" means UK civil time, or maybe even
-		 * straight-up UTC.  Atlantic/Reykjavik is a decent match for that
-		 * interpretation because Iceland hasn't observed DST since 1968.
-		 */
 		/* (UTC+00:00) Monrovia, Reykjavik */
 		"Greenwich Standard Time", "Greenwich Daylight Time",
 		"Atlantic/Reykjavik"
@@ -1058,6 +1056,11 @@ static const struct
 		"Magallanes Standard Time", "Magallanes Daylight Time",
 		"America/Punta_Arenas"
 	},
+	{
+		/* (UTC-05:00) Manitoba */
+		"Manitoba Standard Time", "Manitoba Daylight Time",
+		"America/Winnipeg"
+	},
 	{
 		/* (UTC-09:30) Marquesas Islands */
 		"Marquesas Standard Time", "Marquesas Daylight Time",
@@ -1091,7 +1094,7 @@ static const struct
 	{
 		/* (UTC-07:00) Chihuahua, La Paz, Mazatlan */
 		"Mountain Standard Time (Mexico)", "Mountain Daylight Time (Mexico)",
-		"America/Chihuahua"
+		"America/Mazatlan"
 	},
 	{
 		/* (UTC+06:30) Yangon (Rangoon) */
@@ -1341,7 +1344,7 @@ static const struct
 	{
 		/* (UTC) Coordinated Universal Time */
 		"UTC", "UTC",
-		"UTC"
+		"Etc/UTC"
 	},
 	{
 		/* (UTC+12:00) Coordinated Universal Time+12 */
-- 
2.52.0

Reply via email to