Update the utcIdList (now that I've worked out where it came from)
It was originally (without any comment to this effect, either in the code or the commit message) just the list of offset-zones corresponding to known Windows zones' offsets, augmented to include each whole hour offset out to ±14 hours. Absent documentation, of course, this was not maintained. Added the four offset zones implied by that, that hadn't been added when new entries joined the Windows IDs with novel offsets. Check, after scanning CLDR for Windows data, that this has been kept up to date. Updated the generated data. Change-Id: I3cf3932c320876f7f2f74840d8c3951be49cfe70 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
5f63885e84
commit
08c877a703
@ -768,39 +768,43 @@ static constexpr UtcData utcDataTable[] = {
|
||||
{ 7657,-43200 }, // UTC-12:00
|
||||
{ 7667,-39600 }, // UTC-11:00
|
||||
{ 7677,-36000 }, // UTC-10:00
|
||||
{ 7687,-32400 }, // UTC-09:00
|
||||
{ 7697,-28800 }, // UTC-08:00
|
||||
{ 7707,-25200 }, // UTC-07:00
|
||||
{ 7717,-21600 }, // UTC-06:00
|
||||
{ 7727,-18000 }, // UTC-05:00
|
||||
{ 7737,-16200 }, // UTC-04:30
|
||||
{ 7747,-14400 }, // UTC-04:00
|
||||
{ 7757,-12600 }, // UTC-03:30
|
||||
{ 7767,-10800 }, // UTC-03:00
|
||||
{ 7777, -7200 }, // UTC-02:00
|
||||
{ 7787, -3600 }, // UTC-01:00
|
||||
{ 7797, 0 }, // UTC
|
||||
{ 7821, 3600 }, // UTC+01:00
|
||||
{ 7831, 7200 }, // UTC+02:00
|
||||
{ 7841, 10800 }, // UTC+03:00
|
||||
{ 7851, 12600 }, // UTC+03:30
|
||||
{ 7861, 14400 }, // UTC+04:00
|
||||
{ 7871, 16200 }, // UTC+04:30
|
||||
{ 7881, 18000 }, // UTC+05:00
|
||||
{ 7891, 19800 }, // UTC+05:30
|
||||
{ 7901, 20700 }, // UTC+05:45
|
||||
{ 7911, 21600 }, // UTC+06:00
|
||||
{ 7921, 23400 }, // UTC+06:30
|
||||
{ 7931, 25200 }, // UTC+07:00
|
||||
{ 7941, 28800 }, // UTC+08:00
|
||||
{ 7951, 30600 }, // UTC+08:30
|
||||
{ 7961, 32400 }, // UTC+09:00
|
||||
{ 7971, 34200 }, // UTC+09:30
|
||||
{ 7981, 36000 }, // UTC+10:00
|
||||
{ 7991, 39600 }, // UTC+11:00
|
||||
{ 8001, 43200 }, // UTC+12:00
|
||||
{ 8011, 46800 }, // UTC+13:00
|
||||
{ 8021, 50400 }, // UTC+14:00
|
||||
{ 7687,-34200 }, // UTC-09:30
|
||||
{ 7697,-32400 }, // UTC-09:00
|
||||
{ 7707,-28800 }, // UTC-08:00
|
||||
{ 7717,-25200 }, // UTC-07:00
|
||||
{ 7727,-21600 }, // UTC-06:00
|
||||
{ 7737,-18000 }, // UTC-05:00
|
||||
{ 7747,-16200 }, // UTC-04:30
|
||||
{ 7757,-14400 }, // UTC-04:00
|
||||
{ 7767,-12600 }, // UTC-03:30
|
||||
{ 7777,-10800 }, // UTC-03:00
|
||||
{ 7787, -7200 }, // UTC-02:00
|
||||
{ 7797, -3600 }, // UTC-01:00
|
||||
{ 7807, 0 }, // UTC
|
||||
{ 7831, 3600 }, // UTC+01:00
|
||||
{ 7841, 7200 }, // UTC+02:00
|
||||
{ 7851, 10800 }, // UTC+03:00
|
||||
{ 7861, 12600 }, // UTC+03:30
|
||||
{ 7871, 14400 }, // UTC+04:00
|
||||
{ 7881, 16200 }, // UTC+04:30
|
||||
{ 7891, 18000 }, // UTC+05:00
|
||||
{ 7901, 19800 }, // UTC+05:30
|
||||
{ 7911, 20700 }, // UTC+05:45
|
||||
{ 7921, 21600 }, // UTC+06:00
|
||||
{ 7931, 23400 }, // UTC+06:30
|
||||
{ 7941, 25200 }, // UTC+07:00
|
||||
{ 7951, 28800 }, // UTC+08:00
|
||||
{ 7961, 30600 }, // UTC+08:30
|
||||
{ 7971, 31500 }, // UTC+08:45
|
||||
{ 7981, 32400 }, // UTC+09:00
|
||||
{ 7991, 34200 }, // UTC+09:30
|
||||
{ 8001, 36000 }, // UTC+10:00
|
||||
{ 8011, 37800 }, // UTC+10:30
|
||||
{ 8021, 39600 }, // UTC+11:00
|
||||
{ 8031, 43200 }, // UTC+12:00
|
||||
{ 8041, 45900 }, // UTC+12:45
|
||||
{ 8051, 46800 }, // UTC+13:00
|
||||
{ 8061, 50400 }, // UTC+14:00
|
||||
};
|
||||
|
||||
static constexpr char windowsIdData[] = {
|
||||
@ -1489,28 +1493,31 @@ static constexpr char ianaIdData[] = {
|
||||
0x6f, 0x72, 0x73, 0x65, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2d, 0x31, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x32, 0x3a,
|
||||
0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2d, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30,
|
||||
0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2d, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a,
|
||||
0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2d, 0x30, 0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30,
|
||||
0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x20, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x30, 0x3a,
|
||||
0x30, 0x30, 0x20, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x30, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30,
|
||||
0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a,
|
||||
0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x30, 0x35, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30,
|
||||
0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a,
|
||||
0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x31, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31,
|
||||
0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0
|
||||
0x2d, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x33, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30,
|
||||
0x38, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2d, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x35, 0x3a,
|
||||
0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2d, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x33, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30,
|
||||
0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x20, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x20, 0x55, 0x54, 0x43,
|
||||
0x2d, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x31, 0x3a, 0x30, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30,
|
||||
0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x33, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a,
|
||||
0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x30, 0x35, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x34, 0x35,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30,
|
||||
0x36, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a,
|
||||
0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x34, 0x35, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x33, 0x30,
|
||||
0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31,
|
||||
0x30, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55,
|
||||
0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a,
|
||||
0x34, 0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43,
|
||||
0x2b, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0
|
||||
};
|
||||
|
||||
static constexpr char aliasIdData[] = {
|
||||
|
@ -185,6 +185,18 @@ def main(out, err):
|
||||
subsequent_indent=' ', width=80)) + '\n')
|
||||
return 1
|
||||
|
||||
# Offsets of the windows tables, that are whole numbers of minutes, in minutes:
|
||||
winOff = set(m for m, s in (divmod(v, 60) for k, v in windowsIdList) if s == 0)
|
||||
winUtc = set(f'UTC-{h:02}:{m:02}'
|
||||
for h, m in (divmod(-o, 60) for o in winOff if o < 0)).union(
|
||||
f'UTC+{h:02}:{m:02}'
|
||||
for h, m in (divmod(o, 60) for o in winOff if o > 0))
|
||||
# All such offsets should be represented by entries in utcIdList:
|
||||
newUtc = winUtc.difference(n for n, o in utcIdList)
|
||||
if newUtc:
|
||||
err.write(f'Please add {", ".join(newUtc)} to zonedata.utcIdList\n')
|
||||
return 1
|
||||
|
||||
out.write('Input files parsed, now writing data\n')
|
||||
|
||||
try:
|
||||
|
@ -17,17 +17,23 @@ here, research the relevant zone's offset and add a new entry to the
|
||||
list of twoples, preserving the ordering. Internet search engines and
|
||||
timeanddate.com can help with researching the offset. Note that some
|
||||
UTC offset zones (giving only the hour) are present in windowsIdList.
|
||||
When adding an entry to windowsIdList, check whether its offset
|
||||
corresponds to that of some entry in utcIdList; if not, add such an
|
||||
entry.
|
||||
|
||||
The utcIdList is again a list of tuples (name, offset), associating
|
||||
various UTC-offset names with their offsets in seconds. Aside from
|
||||
'UTC' itself, shared with windowsIdList, these include minutes in
|
||||
their offsets even when they are whole hour offsets. It is not clear
|
||||
where this particular list of offsets came from, but entries should
|
||||
not be removed as they make up the available zones of the UTC
|
||||
back-end. (That recognizes other offset zones, and its is-available
|
||||
check will accept them, but it leaves them out of its list. There are,
|
||||
after all, thousands of possible offset zones, but relatively few are
|
||||
widely used.)
|
||||
their offsets even when they are whole hour offsets. The list contains
|
||||
the UTC-equivalents of all offsets seen in the windowsIdList, plus the
|
||||
whole hours out to ±14 hours, the two verbose forms of UTC±00:00 and
|
||||
any legacy entries from past Windows zone offsets. Entries should not
|
||||
be removed, even if the relevant Windows ID becomes obsolete or
|
||||
switches to a different offset, as they make up the available zones of
|
||||
the UTC back-end. (That recognizes other offset zones, and its
|
||||
is-available check will accept them, but it leaves them out of its
|
||||
list. There are, after all, thousands of possible offset zones, but
|
||||
relatively few are widely used.)
|
||||
|
||||
Note: -00:00 (without the UTC prefix) was introduced in RFC3339 as a
|
||||
way to indicate that a date-time has been converted to UTC but its use
|
||||
@ -51,6 +57,7 @@ utcIdList = (
|
||||
('UTC-12:00', -43200),
|
||||
('UTC-11:00', -39600),
|
||||
('UTC-10:00', -36000),
|
||||
('UTC-09:30', -34200),
|
||||
('UTC-09:00', -32400),
|
||||
('UTC-08:00', -28800),
|
||||
('UTC-07:00', -25200),
|
||||
@ -79,11 +86,14 @@ utcIdList = (
|
||||
('UTC+07:00', 25200),
|
||||
('UTC+08:00', 28800),
|
||||
('UTC+08:30', 30600),
|
||||
('UTC+08:45', 31500),
|
||||
('UTC+09:00', 32400),
|
||||
('UTC+09:30', 34200),
|
||||
('UTC+10:00', 36000),
|
||||
('UTC+10:30', 37800),
|
||||
('UTC+11:00', 39600),
|
||||
('UTC+12:00', 43200),
|
||||
('UTC+12:45', 45900),
|
||||
('UTC+13:00', 46800),
|
||||
('UTC+14:00', 50400),
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user