@vvo/tzdb 6.18.0 → 6.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/dist/formatTimeZone.js +5 -6
- package/dist/formatTimeZone.js.map +1 -1
- package/dist/getTimeZones.js +6 -9
- package/dist/getTimeZones.js.map +1 -1
- package/dist/utils/timeZone.js +106 -0
- package/dist/utils/timeZone.js.map +1 -0
- package/lib/formatTimeZone.js +8 -5
- package/lib/getTimeZones.js +5 -8
- package/lib/utils/timeZone.js +113 -0
- package/package.json +27 -16
- package/raw-time-zones.json +28 -28
package/README.md
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
# tzdb [](https://github.com/vvo/tzdb/blob/
|
|
2
|
-
|
|
3
|
-
_🕙 Always up to date list of time zones, with grouping and major cities_
|
|
4
|
-
|
|
5
|
-
---
|
|
1
|
+
# tzdb [](https://github.com/vvo/tzdb/blob/main/LICENSE) [](https://github.com/vvo/tzdb/actions) [](https://www.npmjs.com/package/@vvo/tzdb) [](https://bundlephobia.com/result?p=@vvo/tzdb)
|
|
6
2
|
|
|
7
3
|
This is a list and npm package of:
|
|
8
4
|
|
package/dist/formatTimeZone.js
CHANGED
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = format;
|
|
7
7
|
|
|
8
|
-
var _luxon = require("luxon");
|
|
9
|
-
|
|
10
8
|
function format({
|
|
11
9
|
alternativeName,
|
|
12
10
|
mainCities,
|
|
@@ -20,10 +18,11 @@ function format({
|
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
function getOffsetString(offsetInMinutes) {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const absOffsetInMinutes = Math.abs(offsetInMinutes);
|
|
22
|
+
const [hours, minutes] = [Math.floor(absOffsetInMinutes / 60), absOffsetInMinutes % 60].map(v => {
|
|
23
|
+
return v.toString().padStart(2, "0");
|
|
24
|
+
});
|
|
25
|
+
const durationInHoursMinutes = `${hours}:${minutes}`;
|
|
27
26
|
return `${offsetInMinutes >= 0 ? "+" : "-"}${durationInHoursMinutes}`;
|
|
28
27
|
}
|
|
29
28
|
//# sourceMappingURL=formatTimeZone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/formatTimeZone.js"],"names":["format","alternativeName","mainCities","rawOffsetInMinutes","currentTimeOffsetInMinutes","useCurrentOffset","offsetInHours","getOffsetString","padStart","join","offsetInMinutes","
|
|
1
|
+
{"version":3,"sources":["../lib/formatTimeZone.js"],"names":["format","alternativeName","mainCities","rawOffsetInMinutes","currentTimeOffsetInMinutes","useCurrentOffset","offsetInHours","getOffsetString","padStart","join","offsetInMinutes","absOffsetInMinutes","Math","abs","hours","minutes","floor","map","v","toString","durationInHoursMinutes"],"mappings":";;;;;;;AAAe,SAASA,MAAT,CACb;AACEC,EAAAA,eADF;AAEEC,EAAAA,UAFF;AAGEC,EAAAA,kBAHF;AAIEC,EAAAA;AAJF,CADa,EAOb;AAAEC,EAAAA,gBAAgB,GAAG;AAArB,IAA+B,EAPlB,EAQb;AACA,QAAMC,aAAa,GAAGD,gBAAgB,GAClCE,eAAe,CAACH,0BAAD,CADmB,GAElCG,eAAe,CAACJ,kBAAD,CAFnB;AAIA,SAAQ,GAAEG,aAAa,CAACE,QAAd,CACR,CADQ,EAER,GAFQ,CAGR,IAAGP,eAAgB,MAAKC,UAAU,CAACO,IAAX,CAAgB,IAAhB,CAAsB,EAHhD;AAID;;AAED,SAASF,eAAT,CAAyBG,eAAzB,EAA0C;AACxC,QAAMC,kBAAkB,GAAGC,IAAI,CAACC,GAAL,CAASH,eAAT,CAA3B;AACA,QAAM,CAACI,KAAD,EAAQC,OAAR,IAAmB,CACvBH,IAAI,CAACI,KAAL,CAAWL,kBAAkB,GAAG,EAAhC,CADuB,EAEvBA,kBAAkB,GAAG,EAFE,EAGvBM,GAHuB,CAGlBC,CAAD,IAAO;AACX,WAAOA,CAAC,CAACC,QAAF,GAAaX,QAAb,CAAsB,CAAtB,EAAyB,GAAzB,CAAP;AACD,GALwB,CAAzB;AAMA,QAAMY,sBAAsB,GAAI,GAAEN,KAAM,IAAGC,OAAQ,EAAnD;AAEA,SAAQ,GAAEL,eAAe,IAAI,CAAnB,GAAuB,GAAvB,GAA6B,GAAI,GAAEU,sBAAuB,EAApE;AACD","sourcesContent":["export default function format(\n {\n alternativeName,\n mainCities,\n rawOffsetInMinutes,\n currentTimeOffsetInMinutes,\n },\n { useCurrentOffset = false } = {},\n) {\n const offsetInHours = useCurrentOffset\n ? getOffsetString(currentTimeOffsetInMinutes)\n : getOffsetString(rawOffsetInMinutes);\n\n return `${offsetInHours.padStart(\n 6,\n \"+\",\n )} ${alternativeName} - ${mainCities.join(\", \")}`;\n}\n\nfunction getOffsetString(offsetInMinutes) {\n const absOffsetInMinutes = Math.abs(offsetInMinutes);\n const [hours, minutes] = [\n Math.floor(absOffsetInMinutes / 60),\n absOffsetInMinutes % 60,\n ].map((v) => {\n return v.toString().padStart(2, \"0\");\n });\n const durationInHoursMinutes = `${hours}:${minutes}`;\n\n return `${offsetInMinutes >= 0 ? \"+\" : \"-\"}${durationInHoursMinutes}`;\n}\n"],"file":"formatTimeZone.js"}
|
package/dist/getTimeZones.js
CHANGED
|
@@ -5,32 +5,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = getTimeZones;
|
|
7
7
|
|
|
8
|
-
var _luxon = require("luxon");
|
|
9
|
-
|
|
10
8
|
var _rawTimeZones = _interopRequireDefault(require("../raw-time-zones.json"));
|
|
11
9
|
|
|
12
10
|
var _formatTimeZone = _interopRequireDefault(require("./formatTimeZone.js"));
|
|
13
11
|
|
|
12
|
+
var _timeZone = require("./utils/timeZone.js");
|
|
13
|
+
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
16
|
function getTimeZones(opts) {
|
|
17
17
|
const includeUtc = !!opts && opts.includeUtc;
|
|
18
18
|
return _rawTimeZones.default.reduce(function (acc, timeZone) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
zone: timeZone.name
|
|
22
|
-
}); // We build on the latest Node.js version, Node.js embed IANA databases
|
|
19
|
+
const timeZoneName = timeZone.name;
|
|
20
|
+
const currentOffset = (0, _timeZone.getZoneOffset)(timeZoneName); // We build on the latest Node.js version, Node.js embed IANA databases
|
|
23
21
|
// it might happen that the environment that will execute getTimeZones() will not know about some
|
|
24
22
|
// timezones. So we ignore the timezone at runtim
|
|
25
23
|
// See https://github.com/vvo/tzdb/issues/43
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
if (currentDate.isValid === false) {
|
|
25
|
+
if (currentOffset === false) {
|
|
29
26
|
return acc;
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
const timeZoneWithCurrentTimeData = { ...timeZone,
|
|
33
|
-
currentTimeOffsetInMinutes:
|
|
30
|
+
currentTimeOffsetInMinutes: currentOffset
|
|
34
31
|
};
|
|
35
32
|
acc.push({ ...timeZoneWithCurrentTimeData,
|
|
36
33
|
currentTimeFormat: (0, _formatTimeZone.default)(timeZoneWithCurrentTimeData, {
|
package/dist/getTimeZones.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/getTimeZones.js"],"names":["getTimeZones","opts","includeUtc","rawTimeZones","reduce","acc","timeZone","
|
|
1
|
+
{"version":3,"sources":["../lib/getTimeZones.js"],"names":["getTimeZones","opts","includeUtc","rawTimeZones","reduce","acc","timeZone","timeZoneName","name","currentOffset","timeZoneWithCurrentTimeData","currentTimeOffsetInMinutes","push","currentTimeFormat","useCurrentOffset","utcTimezone","sort","a","b","compareNumbers","compareStrings","alternativeName","mainCities","x","y","localeCompare","abbreviation","group","countryName","continentCode","continentName","rawOffsetInMinutes","rawFormat"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;AAEe,SAASA,YAAT,CAAsBC,IAAtB,EAA4B;AACzC,QAAMC,UAAU,GAAG,CAAC,CAACD,IAAF,IAAUA,IAAI,CAACC,UAAlC;AACA,SAAOC,sBACJC,MADI,CAEH,UAAUC,GAAV,EAAeC,QAAf,EAAyB;AACvB,UAAMC,YAAY,GAAGD,QAAQ,CAACE,IAA9B;AACA,UAAMC,aAAa,GAAG,6BAAcF,YAAd,CAAtB,CAFuB,CAIvB;AACA;AACA;AACA;;AACA,QAAIE,aAAa,KAAK,KAAtB,EAA6B;AAC3B,aAAOJ,GAAP;AACD;;AAED,UAAMK,2BAA2B,GAAG,EAClC,GAAGJ,QAD+B;AAElCK,MAAAA,0BAA0B,EAAEF;AAFM,KAApC;AAKAJ,IAAAA,GAAG,CAACO,IAAJ,CAAS,EACP,GAAGF,2BADI;AAEPG,MAAAA,iBAAiB,EAAE,6BAAeH,2BAAf,EAA4C;AAC7DI,QAAAA,gBAAgB,EAAE;AAD2C,OAA5C;AAFZ,KAAT;AAOA,WAAOT,GAAP;AACD,GA3BE,EA4BHH,UAAU,GAAG,CAACa,WAAD,CAAH,GAAmB,EA5B1B,EA8BJC,IA9BI,CA8BC,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACd,WACEC,cAAc,CAACF,CAAD,EAAIC,CAAJ,CAAd,IACAE,cAAc,CAACH,CAAC,CAACI,eAAH,EAAoBH,CAAC,CAACG,eAAtB,CADd,IAEAD,cAAc,CAACH,CAAC,CAACK,UAAF,CAAa,CAAb,CAAD,EAAkBJ,CAAC,CAACI,UAAF,CAAa,CAAb,CAAlB,CAHhB;AAKD,GApCI,CAAP;AAqCD;;AAED,SAASH,cAAT,CAAwBI,CAAxB,EAA2BC,CAA3B,EAA8B;AAC5B,SAAOD,CAAC,CAACZ,0BAAF,GAA+Ba,CAAC,CAACb,0BAAxC;AACD;;AAED,SAASS,cAAT,CAAwBG,CAAxB,EAA2BC,CAA3B,EAA8B;AAC5B,MAAI,OAAOD,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,WAAOD,CAAC,CAACE,aAAF,CAAgBD,CAAhB,CAAP;AACD;;AACD,SAAO,CAAP;AACD;;AAED,MAAMT,WAAW,GAAG;AAClBP,EAAAA,IAAI,EAAE,KADY;AAElBa,EAAAA,eAAe,EAAE,kCAFC;AAGlBK,EAAAA,YAAY,EAAE,KAHI;AAIlBC,EAAAA,KAAK,EAAE,CAAC,KAAD,CAJW;AAKlBC,EAAAA,WAAW,EAAE,EALK;AAMlBC,EAAAA,aAAa,EAAE,EANG;AAOlBC,EAAAA,aAAa,EAAE,EAPG;AAQlBR,EAAAA,UAAU,EAAE,CAAC,EAAD,CARM;AASlBS,EAAAA,kBAAkB,EAAE,CATF;AAUlBC,EAAAA,SAAS,EAAE,yCAVO;AAWlBrB,EAAAA,0BAA0B,EAAE,CAXV;AAYlBE,EAAAA,iBAAiB,EAAE;AAZD,CAApB","sourcesContent":["import rawTimeZones from \"../raw-time-zones.json\";\n\nimport formatTimeZone from \"./formatTimeZone.js\";\nimport { getZoneOffset } from \"./utils/timeZone.js\";\n\nexport default function getTimeZones(opts) {\n const includeUtc = !!opts && opts.includeUtc;\n return rawTimeZones\n .reduce(\n function (acc, timeZone) {\n const timeZoneName = timeZone.name;\n const currentOffset = getZoneOffset(timeZoneName);\n\n // We build on the latest Node.js version, Node.js embed IANA databases\n // it might happen that the environment that will execute getTimeZones() will not know about some\n // timezones. So we ignore the timezone at runtim\n // See https://github.com/vvo/tzdb/issues/43\n if (currentOffset === false) {\n return acc;\n }\n\n const timeZoneWithCurrentTimeData = {\n ...timeZone,\n currentTimeOffsetInMinutes: currentOffset,\n };\n\n acc.push({\n ...timeZoneWithCurrentTimeData,\n currentTimeFormat: formatTimeZone(timeZoneWithCurrentTimeData, {\n useCurrentOffset: true,\n }),\n });\n\n return acc;\n },\n includeUtc ? [utcTimezone] : [],\n )\n .sort((a, b) => {\n return (\n compareNumbers(a, b) ||\n compareStrings(a.alternativeName, b.alternativeName) ||\n compareStrings(a.mainCities[0], b.mainCities[0])\n );\n });\n}\n\nfunction compareNumbers(x, y) {\n return x.currentTimeOffsetInMinutes - y.currentTimeOffsetInMinutes;\n}\n\nfunction compareStrings(x, y) {\n if (typeof x === \"string\" && typeof y === \"string\") {\n return x.localeCompare(y);\n }\n return 0;\n}\n\nconst utcTimezone = {\n name: \"UTC\",\n alternativeName: \"Coordinated Universal Time (UTC)\",\n abbreviation: \"UTC\",\n group: [\"UTC\"],\n countryName: \"\",\n continentCode: \"\",\n continentName: \"\",\n mainCities: [\"\"],\n rawOffsetInMinutes: 0,\n rawFormat: \"+00:00 Coordinated Universal Time (UTC)\",\n currentTimeOffsetInMinutes: 0,\n currentTimeFormat: \"+00:00 Coordinated Universal Time (UTC)\",\n};\n"],"file":"getTimeZones.js"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getZoneOffset = getZoneOffset;
|
|
7
|
+
// Most of the code here is from Luxon
|
|
8
|
+
// Copyright 2019 JS Foundation and other contributors
|
|
9
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
10
|
+
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
11
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
12
|
+
const ianaRegex = /^[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?$/;
|
|
13
|
+
const typeToPos = {
|
|
14
|
+
year: 0,
|
|
15
|
+
month: 1,
|
|
16
|
+
day: 2,
|
|
17
|
+
hour: 3,
|
|
18
|
+
minute: 4,
|
|
19
|
+
second: 5
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function isValidIanaSpecifier(s) {
|
|
23
|
+
return !!(s && s.match(ianaRegex));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function hackyOffset(dtf, date) {
|
|
27
|
+
const formatted = dtf.format(date).replace(/\u200E/g, "");
|
|
28
|
+
const parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted);
|
|
29
|
+
const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;
|
|
30
|
+
return [fYear, fMonth, fDay, fHour, fMinute, fSecond];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function partsOffset(dtf, date) {
|
|
34
|
+
const formatted = dtf.formatToParts(date);
|
|
35
|
+
const filled = [];
|
|
36
|
+
|
|
37
|
+
for (let i = 0; i < formatted.length; i++) {
|
|
38
|
+
const {
|
|
39
|
+
type,
|
|
40
|
+
value
|
|
41
|
+
} = formatted[i];
|
|
42
|
+
const pos = typeToPos[type];
|
|
43
|
+
|
|
44
|
+
if (typeof pos !== "undefined") {
|
|
45
|
+
filled[pos] = parseInt(value, 10);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return filled;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function makeDTF(zone) {
|
|
53
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
54
|
+
hourCycle: "h23",
|
|
55
|
+
timeZone: zone,
|
|
56
|
+
year: "numeric",
|
|
57
|
+
month: "2-digit",
|
|
58
|
+
day: "2-digit",
|
|
59
|
+
hour: "2-digit",
|
|
60
|
+
minute: "2-digit",
|
|
61
|
+
second: "2-digit"
|
|
62
|
+
});
|
|
63
|
+
} // covert a calendar object to a local timestamp (epoch, but with the offset baked in)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
function objToLocalTS(obj) {
|
|
67
|
+
let d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond); // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that
|
|
68
|
+
|
|
69
|
+
if (obj.year < 100 && obj.year >= 0) {
|
|
70
|
+
d = new Date(d);
|
|
71
|
+
d.setUTCFullYear(d.getUTCFullYear() - 1900);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return +d;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function getZoneOffset(timeZoneName) {
|
|
78
|
+
if (!isValidIanaSpecifier(timeZoneName)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const date = new Date(Date.now());
|
|
83
|
+
let dtf;
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
dtf = makeDTF(timeZoneName);
|
|
87
|
+
} catch (_) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const [year, month, day, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);
|
|
92
|
+
const asUTC = objToLocalTS({
|
|
93
|
+
year,
|
|
94
|
+
month,
|
|
95
|
+
day,
|
|
96
|
+
hour,
|
|
97
|
+
minute,
|
|
98
|
+
second,
|
|
99
|
+
millisecond: 0
|
|
100
|
+
});
|
|
101
|
+
let asTS = +date;
|
|
102
|
+
const over = asTS % 1000;
|
|
103
|
+
asTS -= over >= 0 ? over : 1000 + over;
|
|
104
|
+
return (asUTC - asTS) / (60 * 1000);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=timeZone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/utils/timeZone.js"],"names":["ianaRegex","typeToPos","year","month","day","hour","minute","second","isValidIanaSpecifier","s","match","hackyOffset","dtf","date","formatted","format","replace","parsed","exec","fMonth","fDay","fYear","fHour","fMinute","fSecond","partsOffset","formatToParts","filled","i","length","type","value","pos","parseInt","makeDTF","zone","Intl","DateTimeFormat","hourCycle","timeZone","objToLocalTS","obj","d","Date","UTC","millisecond","setUTCFullYear","getUTCFullYear","getZoneOffset","timeZoneName","now","_","asUTC","asTS","over"],"mappings":";;;;;;AAAA;AACA;AAEA;AAEA;AAEA;AAEA,MAAMA,SAAS,GACb,sEADF;AAGA,MAAMC,SAAS,GAAG;AAChBC,EAAAA,IAAI,EAAE,CADU;AAEhBC,EAAAA,KAAK,EAAE,CAFS;AAGhBC,EAAAA,GAAG,EAAE,CAHW;AAIhBC,EAAAA,IAAI,EAAE,CAJU;AAKhBC,EAAAA,MAAM,EAAE,CALQ;AAMhBC,EAAAA,MAAM,EAAE;AANQ,CAAlB;;AASA,SAASC,oBAAT,CAA8BC,CAA9B,EAAiC;AAC/B,SAAO,CAAC,EAAEA,CAAC,IAAIA,CAAC,CAACC,KAAF,CAAQV,SAAR,CAAP,CAAR;AACD;;AAED,SAASW,WAAT,CAAqBC,GAArB,EAA0BC,IAA1B,EAAgC;AAC9B,QAAMC,SAAS,GAAGF,GAAG,CAACG,MAAJ,CAAWF,IAAX,EAAiBG,OAAjB,CAAyB,SAAzB,EAAoC,EAApC,CAAlB;AACA,QAAMC,MAAM,GAAG,0CAA0CC,IAA1C,CAA+CJ,SAA/C,CAAf;AACA,QAAM,GAAGK,MAAH,EAAWC,IAAX,EAAiBC,KAAjB,EAAwBC,KAAxB,EAA+BC,OAA/B,EAAwCC,OAAxC,IAAmDP,MAAzD;AACA,SAAO,CAACI,KAAD,EAAQF,MAAR,EAAgBC,IAAhB,EAAsBE,KAAtB,EAA6BC,OAA7B,EAAsCC,OAAtC,CAAP;AACD;;AAED,SAASC,WAAT,CAAqBb,GAArB,EAA0BC,IAA1B,EAAgC;AAC9B,QAAMC,SAAS,GAAGF,GAAG,CAACc,aAAJ,CAAkBb,IAAlB,CAAlB;AACA,QAAMc,MAAM,GAAG,EAAf;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGd,SAAS,CAACe,MAA9B,EAAsCD,CAAC,EAAvC,EAA2C;AACzC,UAAM;AAAEE,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkBjB,SAAS,CAACc,CAAD,CAAjC;AACA,UAAMI,GAAG,GAAG/B,SAAS,CAAC6B,IAAD,CAArB;;AAEA,QAAI,OAAOE,GAAP,KAAe,WAAnB,EAAgC;AAC9BL,MAAAA,MAAM,CAACK,GAAD,CAAN,GAAcC,QAAQ,CAACF,KAAD,EAAQ,EAAR,CAAtB;AACD;AACF;;AACD,SAAOJ,MAAP;AACD;;AAED,SAASO,OAAT,CAAiBC,IAAjB,EAAuB;AACrB,SAAO,IAAIC,IAAI,CAACC,cAAT,CAAwB,OAAxB,EAAiC;AACtCC,IAAAA,SAAS,EAAE,KAD2B;AAEtCC,IAAAA,QAAQ,EAAEJ,IAF4B;AAGtCjC,IAAAA,IAAI,EAAE,SAHgC;AAItCC,IAAAA,KAAK,EAAE,SAJ+B;AAKtCC,IAAAA,GAAG,EAAE,SALiC;AAMtCC,IAAAA,IAAI,EAAE,SANgC;AAOtCC,IAAAA,MAAM,EAAE,SAP8B;AAQtCC,IAAAA,MAAM,EAAE;AAR8B,GAAjC,CAAP;AAUD,C,CAED;;;AACA,SAASiC,YAAT,CAAsBC,GAAtB,EAA2B;AACzB,MAAIC,CAAC,GAAGC,IAAI,CAACC,GAAL,CACNH,GAAG,CAACvC,IADE,EAENuC,GAAG,CAACtC,KAAJ,GAAY,CAFN,EAGNsC,GAAG,CAACrC,GAHE,EAINqC,GAAG,CAACpC,IAJE,EAKNoC,GAAG,CAACnC,MALE,EAMNmC,GAAG,CAAClC,MANE,EAONkC,GAAG,CAACI,WAPE,CAAR,CADyB,CAWzB;;AACA,MAAIJ,GAAG,CAACvC,IAAJ,GAAW,GAAX,IAAkBuC,GAAG,CAACvC,IAAJ,IAAY,CAAlC,EAAqC;AACnCwC,IAAAA,CAAC,GAAG,IAAIC,IAAJ,CAASD,CAAT,CAAJ;AACAA,IAAAA,CAAC,CAACI,cAAF,CAAiBJ,CAAC,CAACK,cAAF,KAAqB,IAAtC;AACD;;AACD,SAAO,CAACL,CAAR;AACD;;AAEM,SAASM,aAAT,CAAuBC,YAAvB,EAAqC;AAC1C,MAAI,CAACzC,oBAAoB,CAACyC,YAAD,CAAzB,EAAyC;AACvC,WAAO,KAAP;AACD;;AAED,QAAMpC,IAAI,GAAG,IAAI8B,IAAJ,CAASA,IAAI,CAACO,GAAL,EAAT,CAAb;AAEA,MAAItC,GAAJ;;AAEA,MAAI;AACFA,IAAAA,GAAG,GAAGsB,OAAO,CAACe,YAAD,CAAb;AACD,GAFD,CAEE,OAAOE,CAAP,EAAU;AACV,WAAO,KAAP;AACD;;AAED,QAAM,CAACjD,IAAD,EAAOC,KAAP,EAAcC,GAAd,EAAmBC,IAAnB,EAAyBC,MAAzB,EAAiCC,MAAjC,IAA2CK,GAAG,CAACc,aAAJ,GAC7CD,WAAW,CAACb,GAAD,EAAMC,IAAN,CADkC,GAE7CF,WAAW,CAACC,GAAD,EAAMC,IAAN,CAFf;AAIA,QAAMuC,KAAK,GAAGZ,YAAY,CAAC;AACzBtC,IAAAA,IADyB;AAEzBC,IAAAA,KAFyB;AAGzBC,IAAAA,GAHyB;AAIzBC,IAAAA,IAJyB;AAKzBC,IAAAA,MALyB;AAMzBC,IAAAA,MANyB;AAOzBsC,IAAAA,WAAW,EAAE;AAPY,GAAD,CAA1B;AAUA,MAAIQ,IAAI,GAAG,CAACxC,IAAZ;AACA,QAAMyC,IAAI,GAAGD,IAAI,GAAG,IAApB;AACAA,EAAAA,IAAI,IAAIC,IAAI,IAAI,CAAR,GAAYA,IAAZ,GAAmB,OAAOA,IAAlC;AACA,SAAO,CAACF,KAAK,GAAGC,IAAT,KAAkB,KAAK,IAAvB,CAAP;AACD","sourcesContent":["// Most of the code here is from Luxon\n// Copyright 2019 JS Foundation and other contributors\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst ianaRegex =\n /^[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?$/;\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\n\nfunction isValidIanaSpecifier(s) {\n return !!(s && s.match(ianaRegex));\n}\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\");\n const parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (typeof pos !== \"undefined\") {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nfunction makeDTF(zone) {\n return new Intl.DateTimeFormat(\"en-US\", {\n hourCycle: \"h23\",\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nfunction objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond,\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function getZoneOffset(timeZoneName) {\n if (!isValidIanaSpecifier(timeZoneName)) {\n return false;\n }\n\n const date = new Date(Date.now());\n\n let dtf;\n\n try {\n dtf = makeDTF(timeZoneName);\n } catch (_) {\n return false;\n }\n\n const [year, month, day, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n}\n"],"file":"timeZone.js"}
|
package/lib/formatTimeZone.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Duration } from "luxon";
|
|
2
|
-
|
|
3
1
|
export default function format(
|
|
4
2
|
{
|
|
5
3
|
alternativeName,
|
|
@@ -20,9 +18,14 @@ export default function format(
|
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
function getOffsetString(offsetInMinutes) {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const absOffsetInMinutes = Math.abs(offsetInMinutes);
|
|
22
|
+
const [hours, minutes] = [
|
|
23
|
+
Math.floor(absOffsetInMinutes / 60),
|
|
24
|
+
absOffsetInMinutes % 60,
|
|
25
|
+
].map((v) => {
|
|
26
|
+
return v.toString().padStart(2, "0");
|
|
27
|
+
});
|
|
28
|
+
const durationInHoursMinutes = `${hours}:${minutes}`;
|
|
26
29
|
|
|
27
30
|
return `${offsetInMinutes >= 0 ? "+" : "-"}${durationInHoursMinutes}`;
|
|
28
31
|
}
|
package/lib/getTimeZones.js
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import { DateTime } from "luxon";
|
|
2
|
-
|
|
3
1
|
import rawTimeZones from "../raw-time-zones.json";
|
|
4
2
|
|
|
5
3
|
import formatTimeZone from "./formatTimeZone.js";
|
|
4
|
+
import { getZoneOffset } from "./utils/timeZone.js";
|
|
6
5
|
|
|
7
6
|
export default function getTimeZones(opts) {
|
|
8
7
|
const includeUtc = !!opts && opts.includeUtc;
|
|
9
8
|
return rawTimeZones
|
|
10
9
|
.reduce(
|
|
11
10
|
function (acc, timeZone) {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
zone: timeZone.name,
|
|
15
|
-
});
|
|
11
|
+
const timeZoneName = timeZone.name;
|
|
12
|
+
const currentOffset = getZoneOffset(timeZoneName);
|
|
16
13
|
|
|
17
14
|
// We build on the latest Node.js version, Node.js embed IANA databases
|
|
18
15
|
// it might happen that the environment that will execute getTimeZones() will not know about some
|
|
19
16
|
// timezones. So we ignore the timezone at runtim
|
|
20
17
|
// See https://github.com/vvo/tzdb/issues/43
|
|
21
|
-
if (
|
|
18
|
+
if (currentOffset === false) {
|
|
22
19
|
return acc;
|
|
23
20
|
}
|
|
24
21
|
|
|
25
22
|
const timeZoneWithCurrentTimeData = {
|
|
26
23
|
...timeZone,
|
|
27
|
-
currentTimeOffsetInMinutes:
|
|
24
|
+
currentTimeOffsetInMinutes: currentOffset,
|
|
28
25
|
};
|
|
29
26
|
|
|
30
27
|
acc.push({
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Most of the code here is from Luxon
|
|
2
|
+
// Copyright 2019 JS Foundation and other contributors
|
|
3
|
+
|
|
4
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
5
|
+
|
|
6
|
+
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
7
|
+
|
|
8
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
9
|
+
|
|
10
|
+
const ianaRegex =
|
|
11
|
+
/^[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?$/;
|
|
12
|
+
|
|
13
|
+
const typeToPos = {
|
|
14
|
+
year: 0,
|
|
15
|
+
month: 1,
|
|
16
|
+
day: 2,
|
|
17
|
+
hour: 3,
|
|
18
|
+
minute: 4,
|
|
19
|
+
second: 5,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function isValidIanaSpecifier(s) {
|
|
23
|
+
return !!(s && s.match(ianaRegex));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function hackyOffset(dtf, date) {
|
|
27
|
+
const formatted = dtf.format(date).replace(/\u200E/g, "");
|
|
28
|
+
const parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted);
|
|
29
|
+
const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;
|
|
30
|
+
return [fYear, fMonth, fDay, fHour, fMinute, fSecond];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function partsOffset(dtf, date) {
|
|
34
|
+
const formatted = dtf.formatToParts(date);
|
|
35
|
+
const filled = [];
|
|
36
|
+
for (let i = 0; i < formatted.length; i++) {
|
|
37
|
+
const { type, value } = formatted[i];
|
|
38
|
+
const pos = typeToPos[type];
|
|
39
|
+
|
|
40
|
+
if (typeof pos !== "undefined") {
|
|
41
|
+
filled[pos] = parseInt(value, 10);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return filled;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function makeDTF(zone) {
|
|
48
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
49
|
+
hourCycle: "h23",
|
|
50
|
+
timeZone: zone,
|
|
51
|
+
year: "numeric",
|
|
52
|
+
month: "2-digit",
|
|
53
|
+
day: "2-digit",
|
|
54
|
+
hour: "2-digit",
|
|
55
|
+
minute: "2-digit",
|
|
56
|
+
second: "2-digit",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// covert a calendar object to a local timestamp (epoch, but with the offset baked in)
|
|
61
|
+
function objToLocalTS(obj) {
|
|
62
|
+
let d = Date.UTC(
|
|
63
|
+
obj.year,
|
|
64
|
+
obj.month - 1,
|
|
65
|
+
obj.day,
|
|
66
|
+
obj.hour,
|
|
67
|
+
obj.minute,
|
|
68
|
+
obj.second,
|
|
69
|
+
obj.millisecond,
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that
|
|
73
|
+
if (obj.year < 100 && obj.year >= 0) {
|
|
74
|
+
d = new Date(d);
|
|
75
|
+
d.setUTCFullYear(d.getUTCFullYear() - 1900);
|
|
76
|
+
}
|
|
77
|
+
return +d;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function getZoneOffset(timeZoneName) {
|
|
81
|
+
if (!isValidIanaSpecifier(timeZoneName)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const date = new Date(Date.now());
|
|
86
|
+
|
|
87
|
+
let dtf;
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
dtf = makeDTF(timeZoneName);
|
|
91
|
+
} catch (_) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const [year, month, day, hour, minute, second] = dtf.formatToParts
|
|
96
|
+
? partsOffset(dtf, date)
|
|
97
|
+
: hackyOffset(dtf, date);
|
|
98
|
+
|
|
99
|
+
const asUTC = objToLocalTS({
|
|
100
|
+
year,
|
|
101
|
+
month,
|
|
102
|
+
day,
|
|
103
|
+
hour,
|
|
104
|
+
minute,
|
|
105
|
+
second,
|
|
106
|
+
millisecond: 0,
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
let asTS = +date;
|
|
110
|
+
const over = asTS % 1000;
|
|
111
|
+
asTS -= over >= 0 ? over : 1000 + over;
|
|
112
|
+
return (asUTC - asTS) / (60 * 1000);
|
|
113
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vvo/tzdb",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.22.0",
|
|
4
4
|
"description": "Always up to date list of time zones, with grouping and major cities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"timezones",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"format": "prettier --write '**/*.*' && eslint . --fix",
|
|
37
37
|
"generate": "babel-node generate.js",
|
|
38
38
|
"lint": "prettier --check '**/*.*' && eslint .",
|
|
39
|
-
"prepublishOnly": "
|
|
40
|
-
"test": "
|
|
39
|
+
"prepublishOnly": "npm run build",
|
|
40
|
+
"test": "npm run lint && npm run build"
|
|
41
41
|
},
|
|
42
42
|
"babel": {
|
|
43
43
|
"presets": [
|
|
@@ -90,30 +90,36 @@
|
|
|
90
90
|
]
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
|
-
"dependencies": {
|
|
94
|
-
"luxon": "1.26.0"
|
|
95
|
-
},
|
|
96
93
|
"devDependencies": {
|
|
97
|
-
"@babel/cli": "7.
|
|
98
|
-
"@babel/core": "7.
|
|
99
|
-
"@babel/node": "7.
|
|
100
|
-
"@babel/preset-env": "7.
|
|
94
|
+
"@babel/cli": "7.15.7",
|
|
95
|
+
"@babel/core": "7.15.5",
|
|
96
|
+
"@babel/node": "7.15.4",
|
|
97
|
+
"@babel/preset-env": "7.15.6",
|
|
98
|
+
"algoliasearch": "4.10.5",
|
|
101
99
|
"babel-eslint": "10.1.0",
|
|
102
|
-
"csv-parse": "4.
|
|
103
|
-
"dotenv": "
|
|
100
|
+
"csv-parse": "4.16.3",
|
|
101
|
+
"dotenv": "10.0.0",
|
|
104
102
|
"eslint": "7.32.0",
|
|
105
103
|
"eslint-plugin-import": "2.24.2",
|
|
106
104
|
"got": "11.8.2",
|
|
107
105
|
"lodash": "4.17.21",
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
106
|
+
"luxon": "2.0.2",
|
|
107
|
+
"p-each-series": "2.1.0",
|
|
108
|
+
"prettier": "2.4.1",
|
|
109
|
+
"prettier-plugin-packagejson": "2.2.13",
|
|
110
|
+
"semantic-release": "18.0.0",
|
|
111
111
|
"semantic-release-cli": "5.4.4",
|
|
112
112
|
"unzipper": "0.10.11"
|
|
113
113
|
},
|
|
114
114
|
"publishConfig": {
|
|
115
115
|
"access": "public"
|
|
116
116
|
},
|
|
117
|
+
"release": {
|
|
118
|
+
"branches": [
|
|
119
|
+
"main",
|
|
120
|
+
"next"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
117
123
|
"renovate": {
|
|
118
124
|
"extends": [
|
|
119
125
|
"config:js-lib",
|
|
@@ -124,6 +130,11 @@
|
|
|
124
130
|
":automergeLinters",
|
|
125
131
|
":automergeTesters",
|
|
126
132
|
":automergeTypes"
|
|
127
|
-
]
|
|
133
|
+
],
|
|
134
|
+
"timezone": "Europe/Paris",
|
|
135
|
+
"schedule": [
|
|
136
|
+
"before 3am on Monday"
|
|
137
|
+
],
|
|
138
|
+
"groupName": "all"
|
|
128
139
|
}
|
|
129
140
|
}
|
package/raw-time-zones.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[{"name":"Pacific/Niue","alternativeName":"Niue Time","group":["Pacific/Niue"],"continentCode":"OC","continentName":"Oceania","countryName":"Niue","countryCode":"NU","mainCities":["Alofi"],"rawOffsetInMinutes":-660,"abbreviation":"NUT","rawFormat":"-11:00 Niue Time - Alofi"},
|
|
2
2
|
{"name":"Pacific/Midway","alternativeName":"Samoa Time","group":["Pacific/Midway"],"continentCode":"OC","continentName":"Oceania","countryName":"United States Minor Outlying Islands","countryCode":"UM","mainCities":["Midway"],"rawOffsetInMinutes":-660,"abbreviation":"SST","rawFormat":"-11:00 Samoa Time - Midway"},
|
|
3
|
-
{"name":"Pacific/Pago_Pago","alternativeName":"Samoa Time","group":["Pacific/Pago_Pago","Pacific/
|
|
3
|
+
{"name":"Pacific/Pago_Pago","alternativeName":"Samoa Time","group":["Pacific/Pago_Pago","Pacific/Samoa","US/Samoa"],"continentCode":"OC","continentName":"Oceania","countryName":"American Samoa","countryCode":"AS","mainCities":["Pago Pago"],"rawOffsetInMinutes":-660,"abbreviation":"SST","rawFormat":"-11:00 Samoa Time - Pago Pago"},
|
|
4
4
|
{"name":"Pacific/Rarotonga","alternativeName":"Cook Islands Time","group":["Pacific/Rarotonga"],"continentCode":"OC","continentName":"Oceania","countryName":"Cook Islands","countryCode":"CK","mainCities":["Avarua"],"rawOffsetInMinutes":-600,"abbreviation":"CKT","rawFormat":"-10:00 Cook Islands Time - Avarua"},
|
|
5
5
|
{"name":"America/Adak","alternativeName":"Hawaii-Aleutian Time","group":["America/Adak","America/Atka","US/Aleutian"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["Adak"],"rawOffsetInMinutes":-600,"abbreviation":"HST","rawFormat":"-10:00 Hawaii-Aleutian Time - Adak"},
|
|
6
6
|
{"name":"Pacific/Honolulu","alternativeName":"Hawaii-Aleutian Time","group":["Pacific/Honolulu","Pacific/Johnston","US/Hawaii"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["Honolulu","East Honolulu","Pearl City","Hilo"],"rawOffsetInMinutes":-600,"abbreviation":"HST","rawFormat":"-10:00 Hawaii-Aleutian Time - Honolulu, East Honolulu, Pearl City, Hilo"},
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{"name":"America/Edmonton","alternativeName":"Mountain Time","group":["America/Cambridge_Bay","America/Edmonton","America/Inuvik","America/Yellowknife","Canada/Mountain"],"continentCode":"NA","continentName":"North America","countryName":"Canada","countryCode":"CA","mainCities":["Calgary","Edmonton","Fort McMurray","Red Deer"],"rawOffsetInMinutes":-420,"abbreviation":"MST","rawFormat":"-07:00 Mountain Time - Calgary, Edmonton, Fort McMurray, Red Deer"},
|
|
17
17
|
{"name":"America/Ojinaga","alternativeName":"Mountain Time","group":["America/Chihuahua","America/Mazatlan","America/Ojinaga","Mexico/BajaSur"],"continentCode":"NA","continentName":"North America","countryName":"Mexico","countryCode":"MX","mainCities":["Ciudad Juárez","Chihuahua","Culiacán","Mazatlán"],"rawOffsetInMinutes":-420,"abbreviation":"MST","rawFormat":"-07:00 Mountain Time - Ciudad Juárez, Chihuahua, Culiacán, Mazatlán"},
|
|
18
18
|
{"name":"America/Denver","alternativeName":"Mountain Time","group":["America/Boise","America/Denver","America/Shiprock","Navajo","US/Mountain"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["Denver","El Paso","Albuquerque","Colorado Springs"],"rawOffsetInMinutes":-420,"abbreviation":"MST","rawFormat":"-07:00 Mountain Time - Denver, El Paso, Albuquerque, Colorado Springs"},
|
|
19
|
-
{"name":"America/Phoenix","alternativeName":"Mountain Time","group":["America/Phoenix","
|
|
19
|
+
{"name":"America/Phoenix","alternativeName":"Mountain Time","group":["America/Phoenix","US/Arizona"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["Phoenix","Tucson","Mesa","Chandler"],"rawOffsetInMinutes":-420,"abbreviation":"MST","rawFormat":"-07:00 Mountain Time - Phoenix, Tucson, Mesa, Chandler"},
|
|
20
20
|
{"name":"America/Whitehorse","alternativeName":"Mountain Time","group":["America/Creston","America/Dawson","America/Dawson_Creek","America/Fort_Nelson","America/Whitehorse","Canada/Yukon"],"continentCode":"NA","continentName":"North America","countryName":"Canada","countryCode":"CA","mainCities":["Whitehorse","Fort St. John","Creston","Dawson"],"rawOffsetInMinutes":-420,"abbreviation":"MST","rawFormat":"-07:00 Mountain Time - Whitehorse, Fort St. John, Creston, Dawson"},
|
|
21
21
|
{"name":"America/Belize","alternativeName":"Central Time","group":["America/Belize"],"continentCode":"NA","continentName":"North America","countryName":"Belize","countryCode":"BZ","mainCities":["Belize City","San Ignacio","Orange Walk","Belmopan"],"rawOffsetInMinutes":-360,"abbreviation":"CST","rawFormat":"-06:00 Central Time - Belize City, San Ignacio, Orange Walk, Belmopan"},
|
|
22
22
|
{"name":"America/Chicago","alternativeName":"Central Time","group":["America/Chicago","America/Indiana/Knox","America/Indiana/Tell_City","America/Menominee","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","US/Central","America/Knox_IN","US/Indiana-Starke"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["Chicago","Houston","San Antonio","Dallas"],"rawOffsetInMinutes":-360,"abbreviation":"CST","rawFormat":"-06:00 Central Time - Chicago, Houston, San Antonio, Dallas"},
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
{"name":"America/Jamaica","alternativeName":"Eastern Time","group":["America/Jamaica","Jamaica"],"continentCode":"NA","continentName":"North America","countryName":"Jamaica","countryCode":"JM","mainCities":["Kingston","New Kingston","Spanish Town","Portmore"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - Kingston, New Kingston, Spanish Town, Portmore"},
|
|
41
41
|
{"name":"America/Nassau","alternativeName":"Eastern Time","group":["America/Nassau"],"continentCode":"NA","continentName":"North America","countryName":"Bahamas","countryCode":"BS","mainCities":["Nassau","Lucaya","Freeport"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - Nassau, Lucaya, Freeport"},
|
|
42
42
|
{"name":"America/New_York","alternativeName":"Eastern Time","group":["America/Detroit","America/Indiana/Indianapolis","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Kentucky/Louisville","America/Kentucky/Monticello","America/New_York","US/Michigan","America/Fort_Wayne","America/Indianapolis","US/East-Indiana","America/Louisville","US/Eastern"],"continentCode":"NA","continentName":"North America","countryName":"United States","countryCode":"US","mainCities":["New York City","Brooklyn","Queens","Philadelphia"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - New York City, Brooklyn, Queens, Philadelphia"},
|
|
43
|
-
{"name":"America/Panama","alternativeName":"Eastern Time","group":["America/Panama","America/
|
|
43
|
+
{"name":"America/Panama","alternativeName":"Eastern Time","group":["America/Panama","America/Coral_Harbour"],"continentCode":"NA","continentName":"North America","countryName":"Panama","countryCode":"PA","mainCities":["Panamá","San Miguelito","Juan Díaz","David"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - Panamá, San Miguelito, Juan Díaz, David"},
|
|
44
44
|
{"name":"America/Port-au-Prince","alternativeName":"Eastern Time","group":["America/Port-au-Prince"],"continentCode":"NA","continentName":"North America","countryName":"Haiti","countryCode":"HT","mainCities":["Port-au-Prince","Carrefour","Delmas 73","Pétionville"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - Port-au-Prince, Carrefour, Delmas 73, Pétionville"},
|
|
45
|
-
{"name":"America/Toronto","alternativeName":"Eastern Time","group":["America/Iqaluit","America/Nipigon","America/Pangnirtung","America/Thunder_Bay","America/Toronto","America/Montreal","
|
|
45
|
+
{"name":"America/Toronto","alternativeName":"Eastern Time","group":["America/Iqaluit","America/Nipigon","America/Pangnirtung","America/Thunder_Bay","America/Toronto","America/Montreal","Canada/Eastern"],"continentCode":"NA","continentName":"North America","countryName":"Canada","countryCode":"CA","mainCities":["Toronto","Montréal","Ottawa","Mississauga"],"rawOffsetInMinutes":-300,"abbreviation":"EST","rawFormat":"-05:00 Eastern Time - Toronto, Montréal, Ottawa, Mississauga"},
|
|
46
46
|
{"name":"America/Guayaquil","alternativeName":"Ecuador Time","group":["America/Guayaquil"],"continentCode":"SA","continentName":"South America","countryName":"Ecuador","countryCode":"EC","mainCities":["Guayaquil","Quito","Cuenca","Santo Domingo de los Colorados"],"rawOffsetInMinutes":-300,"abbreviation":"ECT","rawFormat":"-05:00 Ecuador Time - Guayaquil, Quito, Cuenca, Santo Domingo de los Colorados"},
|
|
47
47
|
{"name":"America/Lima","alternativeName":"Peru Time","group":["America/Lima"],"continentCode":"SA","continentName":"South America","countryName":"Peru","countryCode":"PE","mainCities":["Lima","Arequipa","Callao","Trujillo"],"rawOffsetInMinutes":-300,"abbreviation":"PET","rawFormat":"-05:00 Peru Time - Lima, Arequipa, Callao, Trujillo"},
|
|
48
48
|
{"name":"America/Manaus","alternativeName":"Amazon Time","group":["America/Boa_Vista","America/Campo_Grande","America/Cuiaba","America/Manaus","America/Porto_Velho","Brazil/West"],"continentCode":"SA","continentName":"South America","countryName":"Brazil","countryCode":"BR","mainCities":["Manaus","Campo Grande","Cuiabá","Porto Velho"],"rawOffsetInMinutes":-240,"abbreviation":"AMT","rawFormat":"-04:00 Amazon Time - Manaus, Campo Grande, Cuiabá, Porto Velho"},
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
{"name":"America/St_Thomas","alternativeName":"Atlantic Time","group":["America/St_Thomas"],"continentCode":"NA","continentName":"North America","countryName":"U.S. Virgin Islands","countryCode":"VI","mainCities":["Saint Croix","Charlotte Amalie"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - Saint Croix, Charlotte Amalie"},
|
|
68
68
|
{"name":"America/Grenada","alternativeName":"Atlantic Time","group":["America/Grenada"],"continentCode":"NA","continentName":"North America","countryName":"Grenada","countryCode":"GD","mainCities":["Saint George's"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - Saint George's"},
|
|
69
69
|
{"name":"America/Antigua","alternativeName":"Atlantic Time","group":["America/Antigua"],"continentCode":"NA","continentName":"North America","countryName":"Antigua and Barbuda","countryCode":"AG","mainCities":["Saint John’s"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - Saint John’s"},
|
|
70
|
-
{"name":"America/Puerto_Rico","alternativeName":"Atlantic Time","group":["America/Puerto_Rico","America/
|
|
70
|
+
{"name":"America/Puerto_Rico","alternativeName":"Atlantic Time","group":["America/Puerto_Rico","America/Virgin"],"continentCode":"NA","continentName":"North America","countryName":"Puerto Rico","countryCode":"PR","mainCities":["San Juan","Bayamón","Carolina","Ponce"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - San Juan, Bayamón, Carolina, Ponce"},
|
|
71
71
|
{"name":"America/Santo_Domingo","alternativeName":"Atlantic Time","group":["America/Santo_Domingo"],"continentCode":"NA","continentName":"North America","countryName":"Dominican Republic","countryCode":"DO","mainCities":["Santo Domingo","Santiago de los Caballeros","Santo Domingo Oeste","Santo Domingo Este"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - Santo Domingo, Santiago de los Caballeros, Santo Domingo Oeste, Santo Domingo Este"},
|
|
72
72
|
{"name":"America/Anguilla","alternativeName":"Atlantic Time","group":["America/Anguilla"],"continentCode":"NA","continentName":"North America","countryName":"Anguilla","countryCode":"AI","mainCities":["The Valley"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - The Valley"},
|
|
73
73
|
{"name":"America/Thule","alternativeName":"Atlantic Time","group":["America/Thule"],"continentCode":"NA","continentName":"North America","countryName":"Greenland","countryCode":"GL","mainCities":["Thule"],"rawOffsetInMinutes":-240,"abbreviation":"AST","rawFormat":"-04:00 Atlantic Time - Thule"},
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
{"name":"Atlantic/Azores","alternativeName":"Azores Time","group":["Atlantic/Azores"],"continentCode":"EU","continentName":"Europe","countryName":"Portugal","countryCode":"PT","mainCities":["Ponta Delgada"],"rawOffsetInMinutes":-60,"abbreviation":"AZOT","rawFormat":"-01:00 Azores Time - Ponta Delgada"},
|
|
94
94
|
{"name":"Atlantic/Cape_Verde","alternativeName":"Cape Verde Time","group":["Atlantic/Cape_Verde"],"continentCode":"AF","continentName":"Africa","countryName":"Cape Verde","countryCode":"CV","mainCities":["Praia","Mindelo","Santa Maria","Cova Figueira"],"rawOffsetInMinutes":-60,"abbreviation":"CVT","rawFormat":"-01:00 Cape Verde Time - Praia, Mindelo, Santa Maria, Cova Figueira"},
|
|
95
95
|
{"name":"America/Scoresbysund","alternativeName":"East Greenland Time","group":["America/Scoresbysund"],"continentCode":"NA","continentName":"North America","countryName":"Greenland","countryCode":"GL","mainCities":["Scoresbysund"],"rawOffsetInMinutes":-60,"abbreviation":"EGT","rawFormat":"-01:00 East Greenland Time - Scoresbysund"},
|
|
96
|
-
{"name":"Africa/Abidjan","alternativeName":"Greenwich Mean Time","group":["Africa/Abidjan","Africa/
|
|
96
|
+
{"name":"Africa/Abidjan","alternativeName":"Greenwich Mean Time","group":["Africa/Abidjan","Africa/Timbuktu"],"continentCode":"AF","continentName":"Africa","countryName":"Ivory Coast","countryCode":"CI","mainCities":["Abidjan","Abobo","Bouaké","Daloa"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Abidjan, Abobo, Bouaké, Daloa"},
|
|
97
97
|
{"name":"Africa/Accra","alternativeName":"Greenwich Mean Time","group":["Africa/Accra"],"continentCode":"AF","continentName":"Africa","countryName":"Ghana","countryCode":"GH","mainCities":["Accra","Kumasi","Tamale","Takoradi"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Accra, Kumasi, Tamale, Takoradi"},
|
|
98
98
|
{"name":"Africa/Bamako","alternativeName":"Greenwich Mean Time","group":["Africa/Bamako"],"continentCode":"AF","continentName":"Africa","countryName":"Mali","countryCode":"ML","mainCities":["Bamako","Ségou","Sikasso","Mopti"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Bamako, Ségou, Sikasso, Mopti"},
|
|
99
99
|
{"name":"Africa/Bissau","alternativeName":"Greenwich Mean Time","group":["Africa/Bissau"],"continentCode":"AF","continentName":"Africa","countryName":"Guinea-Bissau","countryCode":"GW","mainCities":["Bissau","Bafatá"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Bissau, Bafatá"},
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
{"name":"Africa/Freetown","alternativeName":"Greenwich Mean Time","group":["Africa/Freetown"],"continentCode":"AF","continentName":"Africa","countryName":"Sierra Leone","countryCode":"SL","mainCities":["Freetown","Bo","Kenema","Koidu"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Freetown, Bo, Kenema, Koidu"},
|
|
106
106
|
{"name":"Atlantic/St_Helena","alternativeName":"Greenwich Mean Time","group":["Atlantic/St_Helena"],"continentCode":"AF","continentName":"Africa","countryName":"Saint Helena","countryCode":"SH","mainCities":["Jamestown"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Jamestown"},
|
|
107
107
|
{"name":"Africa/Lome","alternativeName":"Greenwich Mean Time","group":["Africa/Lome"],"continentCode":"AF","continentName":"Africa","countryName":"Togo","countryCode":"TG","mainCities":["Lomé","Sokodé","Kara","Atakpamé"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Lomé, Sokodé, Kara, Atakpamé"},
|
|
108
|
-
{"name":"Europe/London","alternativeName":"Greenwich Mean Time","group":["Europe/London","Europe/Belfast","
|
|
108
|
+
{"name":"Europe/London","alternativeName":"Greenwich Mean Time","group":["Europe/London","Europe/Belfast","GB","GB-Eire"],"continentCode":"EU","continentName":"Europe","countryName":"United Kingdom","countryCode":"GB","mainCities":["London","Birmingham","Liverpool","Sheffield"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - London, Birmingham, Liverpool, Sheffield"},
|
|
109
109
|
{"name":"Africa/Monrovia","alternativeName":"Greenwich Mean Time","group":["Africa/Monrovia"],"continentCode":"AF","continentName":"Africa","countryName":"Liberia","countryCode":"LR","mainCities":["Monrovia","Gbarnga","Kakata","Bensonville"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Monrovia, Gbarnga, Kakata, Bensonville"},
|
|
110
110
|
{"name":"Africa/Nouakchott","alternativeName":"Greenwich Mean Time","group":["Africa/Nouakchott"],"continentCode":"AF","continentName":"Africa","countryName":"Mauritania","countryCode":"MR","mainCities":["Nouakchott","Nouadhibou","Néma","Kaédi"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Nouakchott, Nouadhibou, Néma, Kaédi"},
|
|
111
111
|
{"name":"Africa/Ouagadougou","alternativeName":"Greenwich Mean Time","group":["Africa/Ouagadougou"],"continentCode":"AF","continentName":"Africa","countryName":"Burkina Faso","countryCode":"BF","mainCities":["Ouagadougou","Bobo-Dioulasso","Koudougou","Ouahigouya"],"rawOffsetInMinutes":0,"abbreviation":"GMT","rawFormat":"+00:00 Greenwich Mean Time - Ouagadougou, Bobo-Dioulasso, Koudougou, Ouahigouya"},
|
|
@@ -123,8 +123,8 @@
|
|
|
123
123
|
{"name":"Africa/Algiers","alternativeName":"Central European Time","group":["Africa/Algiers"],"continentCode":"AF","continentName":"Africa","countryName":"Algeria","countryCode":"DZ","mainCities":["Algiers","Boumerdas","Oran","Tébessa"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Algiers, Boumerdas, Oran, Tébessa"},
|
|
124
124
|
{"name":"Europe/Amsterdam","alternativeName":"Central European Time","group":["Europe/Amsterdam"],"continentCode":"EU","continentName":"Europe","countryName":"Netherlands","countryCode":"NL","mainCities":["Amsterdam","Rotterdam","The Hague","Utrecht"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Amsterdam, Rotterdam, The Hague, Utrecht"},
|
|
125
125
|
{"name":"Europe/Andorra","alternativeName":"Central European Time","group":["Europe/Andorra"],"continentCode":"EU","continentName":"Europe","countryName":"Andorra","countryCode":"AD","mainCities":["Andorra la Vella","les Escaldes"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Andorra la Vella, les Escaldes"},
|
|
126
|
-
{"name":"Europe/Belgrade","alternativeName":"Central European Time","group":["Europe/Belgrade"
|
|
127
|
-
{"name":"Europe/Berlin","alternativeName":"Central European Time","group":["Europe/Berlin","Europe/Busingen"
|
|
126
|
+
{"name":"Europe/Belgrade","alternativeName":"Central European Time","group":["Europe/Belgrade"],"continentCode":"EU","continentName":"Europe","countryName":"Serbia","countryCode":"RS","mainCities":["Belgrade","Niš","Novi Sad","Zemun"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Belgrade, Niš, Novi Sad, Zemun"},
|
|
127
|
+
{"name":"Europe/Berlin","alternativeName":"Central European Time","group":["Europe/Berlin","Europe/Busingen"],"continentCode":"EU","continentName":"Europe","countryName":"Germany","countryCode":"DE","mainCities":["Berlin","Hamburg","Munich","Köln"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Berlin, Hamburg, Munich, Köln"},
|
|
128
128
|
{"name":"Europe/Malta","alternativeName":"Central European Time","group":["Europe/Malta"],"continentCode":"EU","continentName":"Europe","countryName":"Malta","countryCode":"MT","mainCities":["Birkirkara","Qormi","Mosta","Żabbar"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Birkirkara, Qormi, Mosta, Żabbar"},
|
|
129
129
|
{"name":"Europe/Bratislava","alternativeName":"Central European Time","group":["Europe/Bratislava"],"continentCode":"EU","continentName":"Europe","countryName":"Slovakia","countryCode":"SK","mainCities":["Bratislava","Košice","Prešov","Nitra"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Bratislava, Košice, Prešov, Nitra"},
|
|
130
130
|
{"name":"Europe/Brussels","alternativeName":"Central European Time","group":["Europe/Brussels"],"continentCode":"EU","continentName":"Europe","countryName":"Belgium","countryCode":"BE","mainCities":["Brussels","Antwerpen","Gent","Charleroi"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Brussels, Antwerpen, Gent, Charleroi"},
|
|
@@ -136,11 +136,11 @@
|
|
|
136
136
|
{"name":"Europe/Luxembourg","alternativeName":"Central European Time","group":["Europe/Luxembourg"],"continentCode":"EU","continentName":"Europe","countryName":"Luxembourg","countryCode":"LU","mainCities":["Luxembourg","Esch-sur-Alzette","Dudelange"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Luxembourg, Esch-sur-Alzette, Dudelange"},
|
|
137
137
|
{"name":"Europe/Madrid","alternativeName":"Central European Time","group":["Africa/Ceuta","Europe/Madrid"],"continentCode":"EU","continentName":"Europe","countryName":"Spain","countryCode":"ES","mainCities":["Madrid","Barcelona","Valencia","Sevilla"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Madrid, Barcelona, Valencia, Sevilla"},
|
|
138
138
|
{"name":"Europe/Monaco","alternativeName":"Central European Time","group":["Europe/Monaco"],"continentCode":"EU","continentName":"Europe","countryName":"Monaco","countryCode":"MC","mainCities":["Monaco","Monte-Carlo"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Monaco, Monte-Carlo"},
|
|
139
|
-
{"name":"Europe/Oslo","alternativeName":"Central European Time","group":["Europe/Oslo","
|
|
139
|
+
{"name":"Europe/Oslo","alternativeName":"Central European Time","group":["Europe/Oslo","Atlantic/Jan_Mayen"],"continentCode":"EU","continentName":"Europe","countryName":"Norway","countryCode":"NO","mainCities":["Oslo","Bergen","Trondheim","Stavanger"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Oslo, Bergen, Trondheim, Stavanger"},
|
|
140
140
|
{"name":"Europe/Paris","alternativeName":"Central European Time","group":["Europe/Paris"],"continentCode":"EU","continentName":"Europe","countryName":"France","countryCode":"FR","mainCities":["Paris","Marseille","Lyon","Toulouse"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Paris, Marseille, Lyon, Toulouse"},
|
|
141
141
|
{"name":"Europe/Podgorica","alternativeName":"Central European Time","group":["Europe/Podgorica"],"continentCode":"EU","continentName":"Europe","countryName":"Montenegro","countryCode":"ME","mainCities":["Podgorica","Nikšić","Herceg Novi","Pljevlja"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Podgorica, Nikšić, Herceg Novi, Pljevlja"},
|
|
142
|
-
{"name":"Europe/Prague","alternativeName":"Central European Time","group":["Europe/Prague"
|
|
143
|
-
{"name":"Europe/Rome","alternativeName":"Central European Time","group":["Europe/Rome"
|
|
142
|
+
{"name":"Europe/Prague","alternativeName":"Central European Time","group":["Europe/Prague"],"continentCode":"EU","continentName":"Europe","countryName":"Czech Republic","countryCode":"CZ","mainCities":["Prague","Brno","Ostrava","Pilsen"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Prague, Brno, Ostrava, Pilsen"},
|
|
143
|
+
{"name":"Europe/Rome","alternativeName":"Central European Time","group":["Europe/Rome"],"continentCode":"EU","continentName":"Europe","countryName":"Italy","countryCode":"IT","mainCities":["Rome","Milan","Naples","Turin"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Rome, Milan, Naples, Turin"},
|
|
144
144
|
{"name":"Europe/San_Marino","alternativeName":"Central European Time","group":["Europe/San_Marino"],"continentCode":"EU","continentName":"Europe","countryName":"San Marino","countryCode":"SM","mainCities":["San Marino"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - San Marino"},
|
|
145
145
|
{"name":"Europe/Sarajevo","alternativeName":"Central European Time","group":["Europe/Sarajevo"],"continentCode":"EU","continentName":"Europe","countryName":"Bosnia and Herzegovina","countryCode":"BA","mainCities":["Sarajevo","Banja Luka","Zenica","Tuzla"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Sarajevo, Banja Luka, Zenica, Tuzla"},
|
|
146
146
|
{"name":"Europe/Skopje","alternativeName":"Central European Time","group":["Europe/Skopje"],"continentCode":"EU","continentName":"Europe","countryName":"Macedonia","countryCode":"MK","mainCities":["Skopje","Bitola","Kumanovo","Prilep"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Skopje, Bitola, Kumanovo, Prilep"},
|
|
@@ -152,14 +152,14 @@
|
|
|
152
152
|
{"name":"Europe/Vienna","alternativeName":"Central European Time","group":["Europe/Vienna"],"continentCode":"EU","continentName":"Europe","countryName":"Austria","countryCode":"AT","mainCities":["Vienna","Graz","Linz","Favoriten"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Vienna, Graz, Linz, Favoriten"},
|
|
153
153
|
{"name":"Europe/Warsaw","alternativeName":"Central European Time","group":["Europe/Warsaw","Poland"],"continentCode":"EU","continentName":"Europe","countryName":"Poland","countryCode":"PL","mainCities":["Warsaw","Łódź","Kraków","Wrocław"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Warsaw, Łódź, Kraków, Wrocław"},
|
|
154
154
|
{"name":"Europe/Zagreb","alternativeName":"Central European Time","group":["Europe/Zagreb"],"continentCode":"EU","continentName":"Europe","countryName":"Croatia","countryCode":"HR","mainCities":["Zagreb","Split","Rijeka","Osijek"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Zagreb, Split, Rijeka, Osijek"},
|
|
155
|
-
{"name":"Europe/Zurich","alternativeName":"Central European Time","group":["Europe/Zurich"
|
|
155
|
+
{"name":"Europe/Zurich","alternativeName":"Central European Time","group":["Europe/Zurich"],"continentCode":"EU","continentName":"Europe","countryName":"Switzerland","countryCode":"CH","mainCities":["Zürich","Genève","Basel","Lausanne"],"rawOffsetInMinutes":60,"abbreviation":"CET","rawFormat":"+01:00 Central European Time - Zürich, Genève, Basel, Lausanne"},
|
|
156
156
|
{"name":"Africa/Bangui","alternativeName":"West Africa Time","group":["Africa/Bangui"],"continentCode":"AF","continentName":"Africa","countryName":"Central African Republic","countryCode":"CF","mainCities":["Bangui","Bimbo","Mbaïki","Berbérati"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Bangui, Bimbo, Mbaïki, Berbérati"},
|
|
157
157
|
{"name":"Africa/Malabo","alternativeName":"West Africa Time","group":["Africa/Malabo"],"continentCode":"AF","continentName":"Africa","countryName":"Equatorial Guinea","countryCode":"GQ","mainCities":["Bata","Malabo","Ebebiyin"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Bata, Malabo, Ebebiyin"},
|
|
158
158
|
{"name":"Africa/Brazzaville","alternativeName":"West Africa Time","group":["Africa/Brazzaville"],"continentCode":"AF","continentName":"Africa","countryName":"Republic of the Congo","countryCode":"CG","mainCities":["Brazzaville","Pointe-Noire","Dolisie","Kayes"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Brazzaville, Pointe-Noire, Dolisie, Kayes"},
|
|
159
159
|
{"name":"Africa/Porto-Novo","alternativeName":"West Africa Time","group":["Africa/Porto-Novo"],"continentCode":"AF","continentName":"Africa","countryName":"Benin","countryCode":"BJ","mainCities":["Cotonou","Abomey-Calavi","Djougou","Porto-Novo"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Cotonou, Abomey-Calavi, Djougou, Porto-Novo"},
|
|
160
160
|
{"name":"Africa/Douala","alternativeName":"West Africa Time","group":["Africa/Douala"],"continentCode":"AF","continentName":"Africa","countryName":"Cameroon","countryCode":"CM","mainCities":["Douala","Yaoundé","Garoua","Kousséri"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Douala, Yaoundé, Garoua, Kousséri"},
|
|
161
161
|
{"name":"Africa/Kinshasa","alternativeName":"West Africa Time","group":["Africa/Kinshasa"],"continentCode":"AF","continentName":"Africa","countryName":"Democratic Republic of the Congo","countryCode":"CD","mainCities":["Kinshasa","Masina","Kikwit","Mbandaka"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Kinshasa, Masina, Kikwit, Mbandaka"},
|
|
162
|
-
{"name":"Africa/Lagos","alternativeName":"West Africa Time","group":["Africa/Lagos"
|
|
162
|
+
{"name":"Africa/Lagos","alternativeName":"West Africa Time","group":["Africa/Lagos"],"continentCode":"AF","continentName":"Africa","countryName":"Nigeria","countryCode":"NG","mainCities":["Lagos","Kano","Ibadan","Kaduna"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Lagos, Kano, Ibadan, Kaduna"},
|
|
163
163
|
{"name":"Africa/Libreville","alternativeName":"West Africa Time","group":["Africa/Libreville"],"continentCode":"AF","continentName":"Africa","countryName":"Gabon","countryCode":"GA","mainCities":["Libreville","Port-Gentil","Franceville","Oyem"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Libreville, Port-Gentil, Franceville, Oyem"},
|
|
164
164
|
{"name":"Africa/Luanda","alternativeName":"West Africa Time","group":["Africa/Luanda"],"continentCode":"AF","continentName":"Africa","countryName":"Angola","countryCode":"AO","mainCities":["Luanda","N’dalatando","Huambo","Lobito"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - Luanda, N’dalatando, Huambo, Lobito"},
|
|
165
165
|
{"name":"Africa/Ndjamena","alternativeName":"West Africa Time","group":["Africa/Ndjamena"],"continentCode":"AF","continentName":"Africa","countryName":"Chad","countryCode":"TD","mainCities":["N'Djamena","Moundou","Sarh","Abéché"],"rawOffsetInMinutes":60,"abbreviation":"WAT","rawFormat":"+01:00 West Africa Time - N'Djamena, Moundou, Sarh, Abéché"},
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
{"name":"Africa/Blantyre","alternativeName":"Central Africa Time","group":["Africa/Blantyre"],"continentCode":"AF","continentName":"Africa","countryName":"Malawi","countryCode":"MW","mainCities":["Lilongwe","Blantyre","Mzuzu","Zomba"],"rawOffsetInMinutes":120,"abbreviation":"CAT","rawFormat":"+02:00 Central Africa Time - Lilongwe, Blantyre, Mzuzu, Zomba"},
|
|
173
173
|
{"name":"Africa/Lubumbashi","alternativeName":"Central Africa Time","group":["Africa/Lubumbashi"],"continentCode":"AF","continentName":"Africa","countryName":"Democratic Republic of the Congo","countryCode":"CD","mainCities":["Lubumbashi","Mbuji-Mayi","Kisangani","Kananga"],"rawOffsetInMinutes":120,"abbreviation":"CAT","rawFormat":"+02:00 Central Africa Time - Lubumbashi, Mbuji-Mayi, Kisangani, Kananga"},
|
|
174
174
|
{"name":"Africa/Lusaka","alternativeName":"Central Africa Time","group":["Africa/Lusaka"],"continentCode":"AF","continentName":"Africa","countryName":"Zambia","countryCode":"ZM","mainCities":["Lusaka","Kitwe","Ndola","Kabwe"],"rawOffsetInMinutes":120,"abbreviation":"CAT","rawFormat":"+02:00 Central Africa Time - Lusaka, Kitwe, Ndola, Kabwe"},
|
|
175
|
-
{"name":"Africa/Maputo","alternativeName":"Central Africa Time","group":["Africa/Maputo"
|
|
175
|
+
{"name":"Africa/Maputo","alternativeName":"Central Africa Time","group":["Africa/Maputo"],"continentCode":"AF","continentName":"Africa","countryName":"Mozambique","countryCode":"MZ","mainCities":["Maputo","Matola","Beira","Nampula"],"rawOffsetInMinutes":120,"abbreviation":"CAT","rawFormat":"+02:00 Central Africa Time - Maputo, Matola, Beira, Nampula"},
|
|
176
176
|
{"name":"Africa/Windhoek","alternativeName":"Central Africa Time","group":["Africa/Windhoek"],"continentCode":"AF","continentName":"Africa","countryName":"Namibia","countryCode":"NA","mainCities":["Windhoek","Rundu","Walvis Bay","Oshakati"],"rawOffsetInMinutes":120,"abbreviation":"CAT","rawFormat":"+02:00 Central Africa Time - Windhoek, Rundu, Walvis Bay, Oshakati"},
|
|
177
177
|
{"name":"Africa/Juba","alternativeName":"East Africa Time","group":["Africa/Juba"],"continentCode":"AF","continentName":"Africa","countryName":"South Sudan","countryCode":"SS","mainCities":["Juba","Winejok","Malakal","Wau"],"rawOffsetInMinutes":120,"abbreviation":"EAT","rawFormat":"+02:00 East Africa Time - Juba, Winejok, Malakal, Wau"},
|
|
178
178
|
{"name":"Asia/Damascus","alternativeName":"Eastern European Time","group":["Asia/Damascus"],"continentCode":"AS","continentName":"Asia","countryName":"Syria","countryCode":"SY","mainCities":["Aleppo","Damascus","Homs","Ḩamāh"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Aleppo, Damascus, Homs, Ḩamāh"},
|
|
@@ -183,25 +183,25 @@
|
|
|
183
183
|
{"name":"Africa/Cairo","alternativeName":"Eastern European Time","group":["Africa/Cairo","Egypt"],"continentCode":"AF","continentName":"Africa","countryName":"Egypt","countryCode":"EG","mainCities":["Cairo","Alexandria","Giza","Port Said"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Cairo, Alexandria, Giza, Port Said"},
|
|
184
184
|
{"name":"Europe/Chisinau","alternativeName":"Eastern European Time","group":["Europe/Chisinau","Europe/Tiraspol"],"continentCode":"EU","continentName":"Europe","countryName":"Moldova","countryCode":"MD","mainCities":["Chisinau","Tiraspol","Bălţi","Bender"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Chisinau, Tiraspol, Bălţi, Bender"},
|
|
185
185
|
{"name":"Asia/Hebron","alternativeName":"Eastern European Time","group":["Asia/Gaza","Asia/Hebron"],"continentCode":"AS","continentName":"Asia","countryName":"Palestinian Territory","countryCode":"PS","mainCities":["East Jerusalem","Gaza","Khān Yūnis","Jabālyā"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - East Jerusalem, Gaza, Khān Yūnis, Jabālyā"},
|
|
186
|
-
{"name":"Europe/Helsinki","alternativeName":"Eastern European Time","group":["Europe/Helsinki"
|
|
186
|
+
{"name":"Europe/Helsinki","alternativeName":"Eastern European Time","group":["Europe/Helsinki"],"continentCode":"EU","continentName":"Europe","countryName":"Finland","countryCode":"FI","mainCities":["Helsinki","Espoo","Tampere","Vantaa"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Helsinki, Espoo, Tampere, Vantaa"},
|
|
187
187
|
{"name":"Europe/Kaliningrad","alternativeName":"Eastern European Time","group":["Europe/Kaliningrad"],"continentCode":"EU","continentName":"Europe","countryName":"Russia","countryCode":"RU","mainCities":["Kaliningrad","Chernyakhovsk","Sovetsk","Baltiysk"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Kaliningrad, Chernyakhovsk, Sovetsk, Baltiysk"},
|
|
188
188
|
{"name":"Europe/Kiev","alternativeName":"Eastern European Time","group":["Europe/Kiev","Europe/Uzhgorod","Europe/Zaporozhye"],"continentCode":"EU","continentName":"Europe","countryName":"Ukraine","countryCode":"UA","mainCities":["Kyiv","Kharkiv","Donetsk","Odessa"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Kyiv, Kharkiv, Donetsk, Odessa"},
|
|
189
189
|
{"name":"Europe/Mariehamn","alternativeName":"Eastern European Time","group":["Europe/Mariehamn"],"continentCode":"EU","continentName":"Europe","countryName":"Aland Islands","countryCode":"AX","mainCities":["Mariehamn"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Mariehamn"},
|
|
190
|
-
{"name":"Asia/Nicosia","alternativeName":"Eastern European Time","group":["Asia/Famagusta","Asia/Nicosia"
|
|
190
|
+
{"name":"Asia/Nicosia","alternativeName":"Eastern European Time","group":["Asia/Famagusta","Asia/Nicosia"],"continentCode":"EU","continentName":"Europe","countryName":"Cyprus","countryCode":"CY","mainCities":["Nicosia","Limassol","Larnaca","Stróvolos"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Nicosia, Limassol, Larnaca, Stróvolos"},
|
|
191
191
|
{"name":"Europe/Riga","alternativeName":"Eastern European Time","group":["Europe/Riga"],"continentCode":"EU","continentName":"Europe","countryName":"Latvia","countryCode":"LV","mainCities":["Riga","Daugavpils","Liepāja","Jelgava"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Riga, Daugavpils, Liepāja, Jelgava"},
|
|
192
192
|
{"name":"Europe/Sofia","alternativeName":"Eastern European Time","group":["Europe/Sofia"],"continentCode":"EU","continentName":"Europe","countryName":"Bulgaria","countryCode":"BG","mainCities":["Sofia","Plovdiv","Varna","Burgas"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Sofia, Plovdiv, Varna, Burgas"},
|
|
193
193
|
{"name":"Europe/Tallinn","alternativeName":"Eastern European Time","group":["Europe/Tallinn"],"continentCode":"EU","continentName":"Europe","countryName":"Estonia","countryCode":"EE","mainCities":["Tallinn","Tartu","Narva","Kohtla-Järve"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Tallinn, Tartu, Narva, Kohtla-Järve"},
|
|
194
194
|
{"name":"Africa/Tripoli","alternativeName":"Eastern European Time","group":["Africa/Tripoli","Libya"],"continentCode":"AF","continentName":"Africa","countryName":"Libya","countryCode":"LY","mainCities":["Tripoli","Benghazi","Mişrātah","Tarhuna"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Tripoli, Benghazi, Mişrātah, Tarhuna"},
|
|
195
195
|
{"name":"Europe/Vilnius","alternativeName":"Eastern European Time","group":["Europe/Vilnius"],"continentCode":"EU","continentName":"Europe","countryName":"Lithuania","countryCode":"LT","mainCities":["Vilnius","Kaunas","Klaipėda","Šiauliai"],"rawOffsetInMinutes":120,"abbreviation":"EET","rawFormat":"+02:00 Eastern European Time - Vilnius, Kaunas, Klaipėda, Šiauliai"},
|
|
196
196
|
{"name":"Asia/Jerusalem","alternativeName":"Israel Time","group":["Asia/Jerusalem","Asia/Tel_Aviv","Israel"],"continentCode":"AS","continentName":"Asia","countryName":"Israel","countryCode":"IL","mainCities":["Jerusalem","Tel Aviv","West Jerusalem","Haifa"],"rawOffsetInMinutes":120,"abbreviation":"IST","rawFormat":"+02:00 Israel Time - Jerusalem, Tel Aviv, West Jerusalem, Haifa"},
|
|
197
|
-
{"name":"Africa/Johannesburg","alternativeName":"South Africa Time","group":["Africa/Johannesburg"
|
|
197
|
+
{"name":"Africa/Johannesburg","alternativeName":"South Africa Time","group":["Africa/Johannesburg"],"continentCode":"AF","continentName":"Africa","countryName":"South Africa","countryCode":"ZA","mainCities":["Cape Town","Durban","Johannesburg","Soweto"],"rawOffsetInMinutes":120,"abbreviation":"SAST","rawFormat":"+02:00 South Africa Time - Cape Town, Durban, Johannesburg, Soweto"},
|
|
198
198
|
{"name":"Africa/Mbabane","alternativeName":"South Africa Time","group":["Africa/Mbabane"],"continentCode":"AF","continentName":"Africa","countryName":"Swaziland","countryCode":"SZ","mainCities":["Manzini","Mbabane","Lobamba"],"rawOffsetInMinutes":120,"abbreviation":"SAST","rawFormat":"+02:00 South Africa Time - Manzini, Mbabane, Lobamba"},
|
|
199
199
|
{"name":"Africa/Maseru","alternativeName":"South Africa Time","group":["Africa/Maseru"],"continentCode":"AF","continentName":"Africa","countryName":"Lesotho","countryCode":"LS","mainCities":["Maseru","Mafeteng","Leribe","Maputsoe"],"rawOffsetInMinutes":120,"abbreviation":"SAST","rawFormat":"+02:00 South Africa Time - Maseru, Mafeteng, Leribe, Maputsoe"},
|
|
200
200
|
{"name":"Asia/Kuwait","alternativeName":"Arabian Time","group":["Asia/Kuwait"],"continentCode":"AS","continentName":"Asia","countryName":"Kuwait","countryCode":"KW","mainCities":["Al Aḩmadī","Ḩawallī","As Sālimīyah","Şabāḩ as Sālim"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Al Aḩmadī, Ḩawallī, As Sālimīyah, Şabāḩ as Sālim"},
|
|
201
201
|
{"name":"Asia/Baghdad","alternativeName":"Arabian Time","group":["Asia/Baghdad"],"continentCode":"AS","continentName":"Asia","countryName":"Iraq","countryCode":"IQ","mainCities":["Baghdad","Basrah","Al Mawşil al Jadīdah","Al Başrah al Qadīmah"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Baghdad, Basrah, Al Mawşil al Jadīdah, Al Başrah al Qadīmah"},
|
|
202
|
-
{"name":"Asia/Qatar","alternativeName":"Arabian Time","group":["Asia/Qatar"
|
|
202
|
+
{"name":"Asia/Qatar","alternativeName":"Arabian Time","group":["Asia/Qatar"],"continentCode":"AS","continentName":"Asia","countryName":"Qatar","countryCode":"QA","mainCities":["Doha","Ar Rayyān","Umm Şalāl Muḩammad","Al Wakrah"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Doha, Ar Rayyān, Umm Şalāl Muḩammad, Al Wakrah"},
|
|
203
203
|
{"name":"Asia/Bahrain","alternativeName":"Arabian Time","group":["Asia/Bahrain"],"continentCode":"AS","continentName":"Asia","countryName":"Bahrain","countryCode":"BH","mainCities":["Manama","Al Muharraq","Ar Rifā‘","Dār Kulayb"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Manama, Al Muharraq, Ar Rifā‘, Dār Kulayb"},
|
|
204
|
-
{"name":"Asia/Riyadh","alternativeName":"Arabian Time","group":["Asia/Riyadh"
|
|
204
|
+
{"name":"Asia/Riyadh","alternativeName":"Arabian Time","group":["Asia/Riyadh"],"continentCode":"AS","continentName":"Asia","countryName":"Saudi Arabia","countryCode":"SA","mainCities":["Riyadh","Jeddah","Mecca","Medina"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Riyadh, Jeddah, Mecca, Medina"},
|
|
205
205
|
{"name":"Asia/Aden","alternativeName":"Arabian Time","group":["Asia/Aden"],"continentCode":"AS","continentName":"Asia","countryName":"Yemen","countryCode":"YE","mainCities":["Sanaa","Al Ḩudaydah","Taiz","Aden"],"rawOffsetInMinutes":180,"abbreviation":"AST","rawFormat":"+03:00 Arabian Time - Sanaa, Al Ḩudaydah, Taiz, Aden"},
|
|
206
206
|
{"name":"Africa/Addis_Ababa","alternativeName":"East Africa Time","group":["Africa/Addis_Ababa"],"continentCode":"AF","continentName":"Africa","countryName":"Ethiopia","countryCode":"ET","mainCities":["Addis Ababa","Dire Dawa","Mek'ele","Nazrēt"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Addis Ababa, Dire Dawa, Mek'ele, Nazrēt"},
|
|
207
207
|
{"name":"Indian/Antananarivo","alternativeName":"East Africa Time","group":["Indian/Antananarivo"],"continentCode":"AF","continentName":"Africa","countryName":"Madagascar","countryCode":"MG","mainCities":["Antananarivo","Toamasina","Antsirabe","Fianarantsoa"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Antananarivo, Toamasina, Antsirabe, Fianarantsoa"},
|
|
@@ -212,16 +212,16 @@
|
|
|
212
212
|
{"name":"Indian/Mayotte","alternativeName":"East Africa Time","group":["Indian/Mayotte"],"continentCode":"AF","continentName":"Africa","countryName":"Mayotte","countryCode":"YT","mainCities":["Mamoudzou","Koungou","Dzaoudzi"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Mamoudzou, Koungou, Dzaoudzi"},
|
|
213
213
|
{"name":"Africa/Mogadishu","alternativeName":"East Africa Time","group":["Africa/Mogadishu"],"continentCode":"AF","continentName":"Africa","countryName":"Somalia","countryCode":"SO","mainCities":["Mogadishu","Hargeysa","Berbera","Kismayo"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Mogadishu, Hargeysa, Berbera, Kismayo"},
|
|
214
214
|
{"name":"Indian/Comoro","alternativeName":"East Africa Time","group":["Indian/Comoro"],"continentCode":"AF","continentName":"Africa","countryName":"Comoros","countryCode":"KM","mainCities":["Moroni","Moutsamoudou"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Moroni, Moutsamoudou"},
|
|
215
|
-
{"name":"Africa/Nairobi","alternativeName":"East Africa Time","group":["Africa/Nairobi","Africa/
|
|
215
|
+
{"name":"Africa/Nairobi","alternativeName":"East Africa Time","group":["Africa/Nairobi","Africa/Asmera"],"continentCode":"AF","continentName":"Africa","countryName":"Kenya","countryCode":"KE","mainCities":["Nairobi","Mombasa","Nakuru","Eldoret"],"rawOffsetInMinutes":180,"abbreviation":"EAT","rawFormat":"+03:00 East Africa Time - Nairobi, Mombasa, Nakuru, Eldoret"},
|
|
216
216
|
{"name":"Europe/Minsk","alternativeName":"Moscow Time","group":["Europe/Minsk"],"continentCode":"EU","continentName":"Europe","countryName":"Belarus","countryCode":"BY","mainCities":["Minsk","Homyel'","Mahilyow","Vitebsk"],"rawOffsetInMinutes":180,"abbreviation":"MSK","rawFormat":"+03:00 Moscow Time - Minsk, Homyel', Mahilyow, Vitebsk"},
|
|
217
217
|
{"name":"Europe/Moscow","alternativeName":"Moscow Time","group":["Europe/Kirov","Europe/Moscow","Europe/Simferopol","Europe/Volgograd","W-SU"],"continentCode":"EU","continentName":"Europe","countryName":"Russia","countryCode":"RU","mainCities":["Moscow","Saint Petersburg","Nizhniy Novgorod","Kazan"],"rawOffsetInMinutes":180,"abbreviation":"MSK","rawFormat":"+03:00 Moscow Time - Moscow, Saint Petersburg, Nizhniy Novgorod, Kazan"},
|
|
218
218
|
{"name":"Antarctica/Syowa","alternativeName":"Syowa Time","group":["Antarctica/Syowa"],"continentCode":"AN","continentName":"Antarctica","countryName":"Antarctica","countryCode":"AQ","mainCities":["Syowa"],"rawOffsetInMinutes":180,"abbreviation":"SYOT","rawFormat":"+03:00 Syowa Time - Syowa"},
|
|
219
|
-
{"name":"Europe/Istanbul","alternativeName":"Turkey Time","group":["Europe/Istanbul","
|
|
219
|
+
{"name":"Europe/Istanbul","alternativeName":"Turkey Time","group":["Europe/Istanbul","Turkey"],"continentCode":"AS","continentName":"Asia","countryName":"Turkey","countryCode":"TR","mainCities":["Istanbul","Ankara","İzmir","Bursa"],"rawOffsetInMinutes":180,"abbreviation":"TRT","rawFormat":"+03:00 Turkey Time - Istanbul, Ankara, İzmir, Bursa"},
|
|
220
220
|
{"name":"Asia/Tehran","alternativeName":"Iran Time","group":["Asia/Tehran","Iran"],"continentCode":"AS","continentName":"Asia","countryName":"Iran","countryCode":"IR","mainCities":["Tehran","Mashhad","Isfahan","Karaj"],"rawOffsetInMinutes":210,"abbreviation":"IRST","rawFormat":"+03:30 Iran Time - Tehran, Mashhad, Isfahan, Karaj"},
|
|
221
221
|
{"name":"Asia/Yerevan","alternativeName":"Armenia Time","group":["Asia/Yerevan"],"continentCode":"AS","continentName":"Asia","countryName":"Armenia","countryCode":"AM","mainCities":["Yerevan","Gyumri","Vanadzor","Vagharshapat"],"rawOffsetInMinutes":240,"abbreviation":"AMT","rawFormat":"+04:00 Armenia Time - Yerevan, Gyumri, Vanadzor, Vagharshapat"},
|
|
222
222
|
{"name":"Asia/Baku","alternativeName":"Azerbaijan Time","group":["Asia/Baku"],"continentCode":"AS","continentName":"Asia","countryName":"Azerbaijan","countryCode":"AZ","mainCities":["Baku","Ganja","Sumqayıt","Lankaran"],"rawOffsetInMinutes":240,"abbreviation":"AZT","rawFormat":"+04:00 Azerbaijan Time - Baku, Ganja, Sumqayıt, Lankaran"},
|
|
223
223
|
{"name":"Asia/Tbilisi","alternativeName":"Georgia Time","group":["Asia/Tbilisi"],"continentCode":"AS","continentName":"Asia","countryName":"Georgia","countryCode":"GE","mainCities":["Tbilisi","Kutaisi","Batumi","Sokhumi"],"rawOffsetInMinutes":240,"abbreviation":"GET","rawFormat":"+04:00 Georgia Time - Tbilisi, Kutaisi, Batumi, Sokhumi"},
|
|
224
|
-
{"name":"Asia/Dubai","alternativeName":"Gulf Time","group":["Asia/Dubai"
|
|
224
|
+
{"name":"Asia/Dubai","alternativeName":"Gulf Time","group":["Asia/Dubai"],"continentCode":"AS","continentName":"Asia","countryName":"United Arab Emirates","countryCode":"AE","mainCities":["Dubai","Sharjah","Abu Dhabi","Ajman City"],"rawOffsetInMinutes":240,"abbreviation":"GST","rawFormat":"+04:00 Gulf Time - Dubai, Sharjah, Abu Dhabi, Ajman City"},
|
|
225
225
|
{"name":"Asia/Muscat","alternativeName":"Gulf Time","group":["Asia/Muscat"],"continentCode":"AS","continentName":"Asia","countryName":"Oman","countryCode":"OM","mainCities":["Muscat","Seeb","Şalālah","Bawshar"],"rawOffsetInMinutes":240,"abbreviation":"GST","rawFormat":"+04:00 Gulf Time - Muscat, Seeb, Şalālah, Bawshar"},
|
|
226
226
|
{"name":"Indian/Mauritius","alternativeName":"Mauritius Time","group":["Indian/Mauritius"],"continentCode":"AF","continentName":"Africa","countryName":"Mauritius","countryCode":"MU","mainCities":["Port Louis","Beau Bassin-Rose Hill","Vacoas","Curepipe"],"rawOffsetInMinutes":240,"abbreviation":"MUT","rawFormat":"+04:00 Mauritius Time - Port Louis, Beau Bassin-Rose Hill, Vacoas, Curepipe"},
|
|
227
227
|
{"name":"Indian/Reunion","alternativeName":"Réunion Time","group":["Indian/Reunion"],"continentCode":"AF","continentName":"Africa","countryName":"Reunion","countryCode":"RE","mainCities":["Saint-Denis","Saint-Paul","Saint-Pierre","Le Tampon"],"rawOffsetInMinutes":240,"abbreviation":"RET","rawFormat":"+04:00 Réunion Time - Saint-Denis, Saint-Paul, Saint-Pierre, Le Tampon"},
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
{"name":"Indian/Christmas","alternativeName":"Christmas Island Time","group":["Indian/Christmas"],"continentCode":"AS","continentName":"Asia","countryName":"Christmas Island","countryCode":"CX","mainCities":["Flying Fish Cove"],"rawOffsetInMinutes":420,"abbreviation":"CXT","rawFormat":"+07:00 Christmas Island Time - Flying Fish Cove"},
|
|
254
254
|
{"name":"Antarctica/Davis","alternativeName":"Davis Time","group":["Antarctica/Davis"],"continentCode":"AN","continentName":"Antarctica","countryName":"Antarctica","countryCode":"AQ","mainCities":["Davis"],"rawOffsetInMinutes":420,"abbreviation":"DAVT","rawFormat":"+07:00 Davis Time - Davis"},
|
|
255
255
|
{"name":"Asia/Hovd","alternativeName":"Hovd Time","group":["Asia/Hovd"],"continentCode":"AS","continentName":"Asia","countryName":"Mongolia","countryCode":"MN","mainCities":["Khovd","Ölgii","Ulaangom","Uliastay"],"rawOffsetInMinutes":420,"abbreviation":"HOVT","rawFormat":"+07:00 Hovd Time - Khovd, Ölgii, Ulaangom, Uliastay"},
|
|
256
|
-
{"name":"Asia/Bangkok","alternativeName":"Indochina Time","group":["Asia/Bangkok"
|
|
256
|
+
{"name":"Asia/Bangkok","alternativeName":"Indochina Time","group":["Asia/Bangkok"],"continentCode":"AS","continentName":"Asia","countryName":"Thailand","countryCode":"TH","mainCities":["Bangkok","Samut Prakan","Mueang Nonthaburi","Udon Thani"],"rawOffsetInMinutes":420,"abbreviation":"ICT","rawFormat":"+07:00 Indochina Time - Bangkok, Samut Prakan, Mueang Nonthaburi, Udon Thani"},
|
|
257
257
|
{"name":"Asia/Ho_Chi_Minh","alternativeName":"Indochina Time","group":["Asia/Ho_Chi_Minh","Asia/Saigon"],"continentCode":"AS","continentName":"Asia","countryName":"Vietnam","countryCode":"VN","mainCities":["Ho Chi Minh City","Da Nang","Biên Hòa","Nha Trang"],"rawOffsetInMinutes":420,"abbreviation":"ICT","rawFormat":"+07:00 Indochina Time - Ho Chi Minh City, Da Nang, Biên Hòa, Nha Trang"},
|
|
258
258
|
{"name":"Asia/Phnom_Penh","alternativeName":"Indochina Time","group":["Asia/Phnom_Penh"],"continentCode":"AS","continentName":"Asia","countryName":"Cambodia","countryCode":"KH","mainCities":["Phnom Penh","Takeo","Sihanoukville","Battambang"],"rawOffsetInMinutes":420,"abbreviation":"ICT","rawFormat":"+07:00 Indochina Time - Phnom Penh, Takeo, Sihanoukville, Battambang"},
|
|
259
259
|
{"name":"Asia/Vientiane","alternativeName":"Indochina Time","group":["Asia/Vientiane"],"continentCode":"AS","continentName":"Asia","countryName":"Laos","countryCode":"LA","mainCities":["Vientiane","Pakse","Thakhèk","Savannakhet"],"rawOffsetInMinutes":420,"abbreviation":"ICT","rawFormat":"+07:00 Indochina Time - Vientiane, Pakse, Thakhèk, Savannakhet"},
|
|
@@ -281,13 +281,13 @@
|
|
|
281
281
|
{"name":"Asia/Chita","alternativeName":"Yakutsk Time","group":["Asia/Chita","Asia/Khandyga","Asia/Yakutsk"],"continentCode":"EU","continentName":"Europe","countryName":"Russia","countryCode":"RU","mainCities":["Chita","Yakutsk","Blagoveshchensk","Belogorsk"],"rawOffsetInMinutes":540,"abbreviation":"YAKT","rawFormat":"+09:00 Yakutsk Time - Chita, Yakutsk, Blagoveshchensk, Belogorsk"},
|
|
282
282
|
{"name":"Australia/Adelaide","alternativeName":"Australian Central Time","group":["Australia/Adelaide","Australia/Broken_Hill","Australia/South","Australia/Yancowinna"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Adelaide","Adelaide Hills","Mount Gambier","Morphett Vale"],"rawOffsetInMinutes":570,"abbreviation":"ACST","rawFormat":"+09:30 Australian Central Time - Adelaide, Adelaide Hills, Mount Gambier, Morphett Vale"},
|
|
283
283
|
{"name":"Australia/Darwin","alternativeName":"Australian Central Time","group":["Australia/Darwin","Australia/North"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Darwin","Alice Springs","Palmerston"],"rawOffsetInMinutes":570,"abbreviation":"ACST","rawFormat":"+09:30 Australian Central Time - Darwin, Alice Springs, Palmerston"},
|
|
284
|
-
{"name":"Australia/Brisbane","alternativeName":"Australian Eastern Time","group":["Australia/Brisbane","Australia/Lindeman","Australia/Queensland"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Brisbane
|
|
284
|
+
{"name":"Australia/Brisbane","alternativeName":"Australian Eastern Time","group":["Australia/Brisbane","Australia/Lindeman","Australia/Queensland"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Brisbane","Gold Coast","Logan City","Townsville"],"rawOffsetInMinutes":600,"abbreviation":"AEST","rawFormat":"+10:00 Australian Eastern Time - Brisbane, Gold Coast, Logan City, Townsville"},
|
|
285
285
|
{"name":"Australia/Sydney","alternativeName":"Australian Eastern Time","group":["Antarctica/Macquarie","Australia/Currie","Australia/Hobart","Australia/Melbourne","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/ACT","Australia/Canberra","Australia/NSW"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Sydney","Melbourne","Canberra","Newcastle"],"rawOffsetInMinutes":600,"abbreviation":"AEST","rawFormat":"+10:00 Australian Eastern Time - Sydney, Melbourne, Canberra, Newcastle"},
|
|
286
|
-
{"name":"Pacific/Guam","alternativeName":"Chamorro Time","group":["Pacific/Guam"
|
|
286
|
+
{"name":"Pacific/Guam","alternativeName":"Chamorro Time","group":["Pacific/Guam"],"continentCode":"OC","continentName":"Oceania","countryName":"Guam","countryCode":"GU","mainCities":["Dededo Village","Yigo Village","Tamuning-Tumon-Harmon Village","Tamuning"],"rawOffsetInMinutes":600,"abbreviation":"ChST","rawFormat":"+10:00 Chamorro Time - Dededo Village, Yigo Village, Tamuning-Tumon-Harmon Village, Tamuning"},
|
|
287
287
|
{"name":"Pacific/Saipan","alternativeName":"Chamorro Time","group":["Pacific/Saipan"],"continentCode":"OC","continentName":"Oceania","countryName":"Northern Mariana Islands","countryCode":"MP","mainCities":["Saipan"],"rawOffsetInMinutes":600,"abbreviation":"ChST","rawFormat":"+10:00 Chamorro Time - Saipan"},
|
|
288
288
|
{"name":"Pacific/Chuuk","alternativeName":"Chuuk Time","group":["Pacific/Chuuk","Pacific/Truk","Pacific/Yap"],"continentCode":"OC","continentName":"Oceania","countryName":"Micronesia","countryCode":"FM","mainCities":["Chuuk"],"rawOffsetInMinutes":600,"abbreviation":"CHUT","rawFormat":"+10:00 Chuuk Time - Chuuk"},
|
|
289
289
|
{"name":"Antarctica/DumontDUrville","alternativeName":"Dumont-d’Urville Time","group":["Antarctica/DumontDUrville"],"continentCode":"AN","continentName":"Antarctica","countryName":"Antarctica","countryCode":"AQ","mainCities":["DumontDUrville"],"rawOffsetInMinutes":600,"abbreviation":"GMT+10","rawFormat":"+10:00 Dumont-d’Urville Time - DumontDUrville"},
|
|
290
|
-
{"name":"Pacific/Port_Moresby","alternativeName":"Papua New Guinea Time","group":["Pacific/Port_Moresby"
|
|
290
|
+
{"name":"Pacific/Port_Moresby","alternativeName":"Papua New Guinea Time","group":["Pacific/Port_Moresby"],"continentCode":"OC","continentName":"Oceania","countryName":"Papua New Guinea","countryCode":"PG","mainCities":["Port Moresby","Lae","Mount Hagen","Popondetta"],"rawOffsetInMinutes":600,"abbreviation":"PGT","rawFormat":"+10:00 Papua New Guinea Time - Port Moresby, Lae, Mount Hagen, Popondetta"},
|
|
291
291
|
{"name":"Asia/Vladivostok","alternativeName":"Vladivostok Time","group":["Asia/Ust-Nera","Asia/Vladivostok"],"continentCode":"EU","continentName":"Europe","countryName":"Russia","countryCode":"RU","mainCities":["Vladivostok","Khabarovsk","Khabarovsk Vtoroy","Komsomolsk-on-Amur"],"rawOffsetInMinutes":600,"abbreviation":"VLAT","rawFormat":"+10:00 Vladivostok Time - Vladivostok, Khabarovsk, Khabarovsk Vtoroy, Komsomolsk-on-Amur"},
|
|
292
292
|
{"name":"Australia/Lord_Howe","alternativeName":"Lord Howe Time","group":["Australia/Lord_Howe","Australia/LHI"],"continentCode":"OC","continentName":"Oceania","countryName":"Australia","countryCode":"AU","mainCities":["Lord Howe"],"rawOffsetInMinutes":630,"abbreviation":"LHST","rawFormat":"+10:30 Lord Howe Time - Lord Howe"},
|
|
293
293
|
{"name":"Pacific/Bougainville","alternativeName":"Bougainville Time","group":["Pacific/Bougainville"],"continentCode":"OC","continentName":"Oceania","countryName":"Papua New Guinea","countryCode":"PG","mainCities":["Arawa"],"rawOffsetInMinutes":660,"abbreviation":"BST","rawFormat":"+11:00 Bougainville Time - Arawa"},
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
{"name":"Pacific/Tarawa","alternativeName":"Gilbert Islands Time","group":["Pacific/Tarawa"],"continentCode":"OC","continentName":"Oceania","countryName":"Kiribati","countryCode":"KI","mainCities":["Tarawa"],"rawOffsetInMinutes":720,"abbreviation":"GMT+12","rawFormat":"+12:00 Gilbert Islands Time - Tarawa"},
|
|
303
303
|
{"name":"Pacific/Majuro","alternativeName":"Marshall Islands Time","group":["Pacific/Kwajalein","Pacific/Majuro","Kwajalein"],"continentCode":"OC","continentName":"Oceania","countryName":"Marshall Islands","countryCode":"MH","mainCities":["Majuro","Kwajalein","RMI Capitol"],"rawOffsetInMinutes":720,"abbreviation":"MHT","rawFormat":"+12:00 Marshall Islands Time - Majuro, Kwajalein, RMI Capitol"},
|
|
304
304
|
{"name":"Pacific/Nauru","alternativeName":"Nauru Time","group":["Pacific/Nauru"],"continentCode":"OC","continentName":"Oceania","countryName":"Nauru","countryCode":"NR","mainCities":["Yaren"],"rawOffsetInMinutes":720,"abbreviation":"NRT","rawFormat":"+12:00 Nauru Time - Yaren"},
|
|
305
|
-
{"name":"Pacific/Auckland","alternativeName":"New Zealand Time","group":["Pacific/Auckland","Antarctica/
|
|
305
|
+
{"name":"Pacific/Auckland","alternativeName":"New Zealand Time","group":["Pacific/Auckland","Antarctica/South_Pole","NZ"],"continentCode":"OC","continentName":"Oceania","countryName":"New Zealand","countryCode":"NZ","mainCities":["Auckland","Wellington","Christchurch","Manukau City"],"rawOffsetInMinutes":720,"abbreviation":"NZST","rawFormat":"+12:00 New Zealand Time - Auckland, Wellington, Christchurch, Manukau City"},
|
|
306
306
|
{"name":"Antarctica/McMurdo","alternativeName":"New Zealand Time","group":["Antarctica/McMurdo"],"continentCode":"AN","continentName":"Antarctica","countryName":"Antarctica","countryCode":"AQ","mainCities":["McMurdo"],"rawOffsetInMinutes":720,"abbreviation":"NZST","rawFormat":"+12:00 New Zealand Time - McMurdo"},
|
|
307
307
|
{"name":"Asia/Kamchatka","alternativeName":"Petropavlovsk-Kamchatski Time","group":["Asia/Anadyr","Asia/Kamchatka"],"continentCode":"EU","continentName":"Europe","countryName":"Russia","countryCode":"RU","mainCities":["Petropavlovsk-Kamchatsky","Yelizovo","Vilyuchinsk","Anadyr"],"rawOffsetInMinutes":720,"abbreviation":"GMT+12","rawFormat":"+12:00 Petropavlovsk-Kamchatski Time - Petropavlovsk-Kamchatsky, Yelizovo, Vilyuchinsk, Anadyr"},
|
|
308
308
|
{"name":"Pacific/Funafuti","alternativeName":"Tuvalu Time","group":["Pacific/Funafuti"],"continentCode":"OC","continentName":"Oceania","countryName":"Tuvalu","countryCode":"TV","mainCities":["Funafuti"],"rawOffsetInMinutes":720,"abbreviation":"TVT","rawFormat":"+12:00 Tuvalu Time - Funafuti"},
|