1 |
|
2 | !function(exports) {
|
3 | exports.guessZone = guessZone
|
4 | guessZone.zones = {
|
5 | "-480d": "America/Los_Angeles",
|
6 | "-420": "America/Phoenix",
|
7 | "-420d": "America/Denver",
|
8 | "-360": "America/Guatemala",
|
9 | "-360d": "America/Chicago",
|
10 | "-300": "America/Bogota",
|
11 | "-300d": "America/New_York",
|
12 | "-270": "America/Caracas",
|
13 | "-240d": "America/Halifax",
|
14 | "-240": "America/Santo_Domingo",
|
15 | "-240s": "America/Asuncion",
|
16 | "-210d": "America/St_Johns",
|
17 | "-180d": "America/Godthab",
|
18 | "-180": "America/Argentina/Buenos_Aires",
|
19 | "-180s": "America/Montevideo",
|
20 | "-120": "America/Noronha",
|
21 | "-120d": "America/Noronha",
|
22 | "0": "UTC",
|
23 | "0d": "Europe/London",
|
24 | "60d": "Europe/Berlin",
|
25 | "60": "Africa/Lagos",
|
26 | "60S": "Africa/Windhoek",
|
27 | "120d": "Asia/Beirut",
|
28 | "120": "Africa/Johannesburg",
|
29 | "180": "Asia/Baghdad",
|
30 | "180d": "Europe/Moscow",
|
31 | "210d": "Asia/Tehran",
|
32 | "240": "Asia/Dubai",
|
33 | "240d": "Asia/Baku",
|
34 | "270": "Asia/Kabul",
|
35 | "300d": "Asia/Yekaterinburg",
|
36 | "300": "Asia/Karachi",
|
37 | "330": "Asia/Kolkata",
|
38 | "345": "Asia/Kathmandu",
|
39 | "360": "Asia/Dhaka",
|
40 | "360d": "Asia/Omsk",
|
41 | "390": "Asia/Rangoon",
|
42 | "420d": "Asia/Krasnoyarsk",
|
43 | "420": "Asia/Jakarta",
|
44 | "480": "Asia/Shanghai",
|
45 | "480d": "Asia/Irkutsk",
|
46 | "525": "Australia/Eucla",
|
47 | "525s": "Australia/Eucla",
|
48 | "540d": "Asia/Yakutsk",
|
49 | "540": "Asia/Tokyo",
|
50 | "570": "Australia/Darwin",
|
51 | "570s": "Australia/Adelaide",
|
52 | "600": "Australia/Brisbane",
|
53 | "600d": "Asia/Vladivostok",
|
54 | "600s": "Australia/Sydney",
|
55 | "630s": "Australia/Lord_Howe",
|
56 | "660d": "Asia/Kamchatka",
|
57 | "660": "Pacific/Noumea",
|
58 | "690": "Pacific/Norfolk",
|
59 | "720s": "Pacific/Auckland",
|
60 | "720": "Pacific/Majuro",
|
61 | "765s": "Pacific/Chatham",
|
62 | "780": "Pacific/Tongatapu",
|
63 | "780s": "Pacific/Apia",
|
64 | "840": "Pacific/Kiritimati"
|
65 | }
|
66 |
|
67 | function guessZone(arr, map) {
|
68 | var zone
|
69 |
|
70 | try {
|
71 | zone = Intl.DateTimeFormat().resolvedOptions().timeZone
|
72 |
|
73 | } catch (e) {
|
74 | var diff
|
75 | , zones = Object.assign(guessZone.zones, map)
|
76 | , date = new Date(2015, 0, 1)
|
77 | , offset = -date.getTimezoneOffset()
|
78 | , i = 0
|
79 | , len = arr && arr.length
|
80 |
|
81 | date.setMonth(5)
|
82 | if (diff = -date.getTimezoneOffset() - offset) {
|
83 | offset += diff > 0 ? "d" : "s"
|
84 | }
|
85 |
|
86 | for (; !zone && i < len; ) if (diff = arr[i++]) {
|
87 | zone = zones[diff + offset] || zones[diff.split("-")[0] + offset]
|
88 | }
|
89 | }
|
90 | return zone || zones[offset]
|
91 | }
|
92 | }(this.Date || this)
|
93 |
|