|
1 | 1 | //! moment-timezone.js
|
2 |
| -//! version : 0.5.43 |
| 2 | +//! version : 0.5.44 |
3 | 3 | //! Copyright (c) JS Foundation and other contributors
|
4 | 4 | //! license : MIT
|
5 | 5 | //! github.com/moment/moment-timezone
|
|
29 | 29 | // return moment;
|
30 | 30 | // }
|
31 | 31 |
|
32 |
| - var VERSION = "0.5.43", |
| 32 | + var VERSION = "0.5.44", |
33 | 33 | zones = {},
|
34 | 34 | links = {},
|
35 | 35 | countries = {},
|
|
150 | 150 | }
|
151 | 151 | }
|
152 | 152 |
|
| 153 | + function closest (num, arr) { |
| 154 | + var len = arr.length; |
| 155 | + if (num < arr[0]) { |
| 156 | + return 0; |
| 157 | + } else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) { |
| 158 | + return len - 1; |
| 159 | + } else if (num >= arr[len - 1]) { |
| 160 | + return -1; |
| 161 | + } |
| 162 | + |
| 163 | + var mid; |
| 164 | + var lo = 0; |
| 165 | + var hi = len - 1; |
| 166 | + while (hi - lo > 1) { |
| 167 | + mid = Math.floor((lo + hi) / 2); |
| 168 | + if (arr[mid] <= num) { |
| 169 | + lo = mid; |
| 170 | + } else { |
| 171 | + hi = mid; |
| 172 | + } |
| 173 | + } |
| 174 | + return hi; |
| 175 | + } |
| 176 | + |
153 | 177 | Zone.prototype = {
|
154 | 178 | _set : function (unpacked) {
|
155 | 179 | this.name = unpacked.name;
|
|
164 | 188 | untils = this.untils,
|
165 | 189 | i;
|
166 | 190 |
|
167 |
| - for (i = 0; i < untils.length; i++) { |
168 |
| - if (target < untils[i]) { |
169 |
| - return i; |
170 |
| - } |
| 191 | + i = closest(target, untils); |
| 192 | + if (i >= 0) { |
| 193 | + return i; |
171 | 194 | }
|
172 | 195 | },
|
173 | 196 |
|
|
286 | 309 | function userOffsets() {
|
287 | 310 | var startYear = new Date().getFullYear() - 2,
|
288 | 311 | last = new OffsetAt(new Date(startYear, 0, 1)),
|
| 312 | + lastOffset = last.offset, |
289 | 313 | offsets = [last],
|
290 |
| - change, next, i; |
| 314 | + change, next, nextOffset, i; |
291 | 315 |
|
292 | 316 | for (i = 1; i < 48; i++) {
|
293 |
| - next = new OffsetAt(new Date(startYear, i, 1)); |
294 |
| - if (next.offset !== last.offset) { |
| 317 | + nextOffset = new Date(startYear, i, 1).getTimezoneOffset(); |
| 318 | + if (nextOffset !== lastOffset) { |
| 319 | + // Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets |
| 320 | + next = new OffsetAt(new Date(startYear, i, 1)); |
295 | 321 | change = findChange(last, next);
|
296 | 322 | offsets.push(change);
|
297 | 323 | offsets.push(new OffsetAt(new Date(change.at + 6e4)));
|
| 324 | + last = next; |
| 325 | + lastOffset = nextOffset; |
298 | 326 | }
|
299 |
| - last = next; |
300 | 327 | }
|
301 | 328 |
|
302 | 329 | for (i = 0; i < 4; i++) {
|
|
334 | 361 | var offsetsLength = offsets.length,
|
335 | 362 | filteredGuesses = {},
|
336 | 363 | out = [],
|
337 |
| - i, j, guessesOffset; |
| 364 | + checkedOffsets = {}, |
| 365 | + i, j, offset, guessesOffset; |
338 | 366 |
|
339 | 367 | for (i = 0; i < offsetsLength; i++) {
|
340 |
| - guessesOffset = guesses[offsets[i].offset] || {}; |
| 368 | + offset = offsets[i].offset; |
| 369 | + if (checkedOffsets.hasOwnProperty(offset)) { |
| 370 | + continue; |
| 371 | + } |
| 372 | + guessesOffset = guesses[offset] || {}; |
341 | 373 | for (j in guessesOffset) {
|
342 | 374 | if (guessesOffset.hasOwnProperty(j)) {
|
343 | 375 | filteredGuesses[j] = true;
|
344 | 376 | }
|
345 | 377 | }
|
| 378 | + checkedOffsets[offset] = true; |
346 | 379 | }
|
347 | 380 |
|
348 | 381 | for (i in filteredGuesses) {
|
|
558 | 591 | function tz (input) {
|
559 | 592 | var args = Array.prototype.slice.call(arguments, 0, -1),
|
560 | 593 | name = arguments[arguments.length - 1],
|
561 |
| - zone = getZone(name), |
562 |
| - out = moment.utc.apply(null, args); |
| 594 | + out = moment.utc.apply(null, args), |
| 595 | + zone; |
563 | 596 |
|
564 |
| - if (zone && !moment.isMoment(input) && needsOffset(out)) { |
| 597 | + if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) { |
565 | 598 | out.add(zone.parse(out), 'minutes');
|
566 | 599 | }
|
567 | 600 |
|
|
607 | 640 | offset;
|
608 | 641 |
|
609 | 642 | if (mom._z === undefined) {
|
610 |
| - if (zone && needsOffset(mom) && !mom._isUTC) { |
| 643 | + if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) { |
611 | 644 | mom._d = moment.utc(mom._a)._d;
|
612 | 645 | mom.utc().add(zone.parse(mom), 'minutes');
|
613 | 646 | }
|
|
691 | 724 | }
|
692 | 725 |
|
693 | 726 | loadData({
|
694 |
| - "version": "2023c", |
| 727 | + "version": "2023d", |
695 | 728 | "zones": [
|
696 | 729 | "Africa/Abidjan|GMT|0|0||48e5",
|
697 | 730 | "Africa/Nairobi|EAT|-30|0||47e5",
|
|
735 | 768 | "America/Ojinaga|MST MDT CST CDT|70 60 60 50|01010101012323232323232|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e3",
|
736 | 769 | "America/Santiago|-03 -04|30 40|01010101010101010101010|1VJD0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5",
|
737 | 770 | "America/Sao_Paulo|-02 -03|20 30|0101|1Vc20 1HB0 FX0|20e6",
|
738 |
| - "Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4", |
| 771 | + "America/Scoresbysund|-01 +00 -02|10 0 20|0101010101010202020202|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|452", |
739 | 772 | "America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1Vktu 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4",
|
740 |
| - "Antarctica/Casey|+11 +08|-b0 -80|0101010|1Vkh0 1o30 14k0 1kr0 12l0 1o01|10", |
| 773 | + "Antarctica/Casey|+11 +08|-b0 -80|010101010101|1Vkh0 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10", |
741 | 774 | "Asia/Bangkok|+07|-70|0||15e6",
|
742 | 775 | "Asia/Vladivostok|+10|-a0|0||60e4",
|
743 | 776 | "Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1VsE0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
|
744 | 777 | "Asia/Tashkent|+05|-50|0||23e5",
|
745 | 778 | "Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
|
746 | 779 | "Europe/Istanbul|+03|-30|0||13e6",
|
747 | 780 | "Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40",
|
| 781 | + "Antarctica/Vostok|+07 +05|-70 -50|01|2bnv0|25", |
748 | 782 | "Asia/Dhaka|+06|-60|0||16e6",
|
749 | 783 | "Asia/Amman|EET EEST +03|-20 -30 -30|01010101012|1VrW0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5",
|
750 | 784 | "Asia/Kamchatka|+12|-c0|0||18e4",
|
|
774 | 808 | "Asia/Seoul|KST|-90|0||23e6",
|
775 | 809 | "Asia/Tehran|+0330 +0430|-3u -4u|01010101010|1VoIu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
|
776 | 810 | "Asia/Tokyo|JST|-90|0||38e6",
|
| 811 | + "Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4", |
777 | 812 | "Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5",
|
778 | 813 | "Atlantic/Cape_Verde|-01|10|0||50e4",
|
779 | 814 | "Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1VsEu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
|
|
1070 | 1105 | "Asia/Chita|Asia/Yakutsk",
|
1071 | 1106 | "Asia/Chita|Etc/GMT-9",
|
1072 | 1107 | "Asia/Chita|Pacific/Palau",
|
1073 |
| - "Asia/Dhaka|Antarctica/Vostok", |
1074 | 1108 | "Asia/Dhaka|Asia/Almaty",
|
1075 | 1109 | "Asia/Dhaka|Asia/Bishkek",
|
1076 | 1110 | "Asia/Dhaka|Asia/Dacca",
|
|
1164 | 1198 | "Asia/Vladivostok|Pacific/Port_Moresby",
|
1165 | 1199 | "Asia/Vladivostok|Pacific/Truk",
|
1166 | 1200 | "Asia/Vladivostok|Pacific/Yap",
|
1167 |
| - "Atlantic/Azores|America/Scoresbysund", |
1168 | 1201 | "Atlantic/Cape_Verde|Etc/GMT+1",
|
1169 | 1202 | "Australia/Adelaide|Australia/Broken_Hill",
|
1170 | 1203 | "Australia/Adelaide|Australia/South",
|
|
1301 | 1334 | "AL|Europe/Tirane",
|
1302 | 1335 | "AM|Asia/Yerevan",
|
1303 | 1336 | "AO|Africa/Lagos Africa/Luanda",
|
1304 |
| - "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok", |
| 1337 | + "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa", |
1305 | 1338 | "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
|
1306 | 1339 | "AS|Pacific/Pago_Pago",
|
1307 | 1340 | "AT|Europe/Vienna",
|
|
0 commit comments