UNPKG

litejs

Version:

Single-page application framework

94 lines (87 loc) 2.51 kB
!function(exports) { exports.guessZone = guessZone guessZone.zones = { "-480d": "America/Los_Angeles", "-420": "America/Phoenix", "-420d": "America/Denver", "-360": "America/Guatemala", "-360d": "America/Chicago", "-300": "America/Bogota", "-300d": "America/New_York", "-270": "America/Caracas", "-240d": "America/Halifax", "-240": "America/Santo_Domingo", "-240s": "America/Asuncion", "-210d": "America/St_Johns", "-180d": "America/Godthab", "-180": "America/Argentina/Buenos_Aires", "-180s": "America/Montevideo", "-120": "America/Noronha", "-120d": "America/Noronha", "0": "UTC", "0d": "Europe/London", "60d": "Europe/Berlin", "60": "Africa/Lagos", "60S": "Africa/Windhoek", "120d": "Asia/Beirut", "120": "Africa/Johannesburg", "180": "Asia/Baghdad", "180d": "Europe/Moscow", "210d": "Asia/Tehran", "240": "Asia/Dubai", "240d": "Asia/Baku", "270": "Asia/Kabul", "300d": "Asia/Yekaterinburg", "300": "Asia/Karachi", "330": "Asia/Kolkata", "345": "Asia/Kathmandu", "360": "Asia/Dhaka", "360d": "Asia/Omsk", "390": "Asia/Rangoon", "420d": "Asia/Krasnoyarsk", "420": "Asia/Jakarta", "480": "Asia/Shanghai", "480d": "Asia/Irkutsk", "525": "Australia/Eucla", "525s": "Australia/Eucla", "540d": "Asia/Yakutsk", "540": "Asia/Tokyo", "570": "Australia/Darwin", "570s": "Australia/Adelaide", "600": "Australia/Brisbane", "600d": "Asia/Vladivostok", "600s": "Australia/Sydney", "630s": "Australia/Lord_Howe", "660d": "Asia/Kamchatka", "660": "Pacific/Noumea", "690": "Pacific/Norfolk", "720s": "Pacific/Auckland", "720": "Pacific/Majuro", "765s": "Pacific/Chatham", "780": "Pacific/Tongatapu", "780s": "Pacific/Apia", "840": "Pacific/Kiritimati" } function guessZone(arr, map) { var zone try { zone = Intl.DateTimeFormat().resolvedOptions().timeZone // TODO:2018-03-26:lauri:Check that result is supported zone } catch (e) { var diff , zones = Object.assign(guessZone.zones, map) , date = new Date(2015, 0, 1) , offset = -date.getTimezoneOffset() , i = 0 , len = arr && arr.length date.setMonth(5) if (diff = -date.getTimezoneOffset() - offset) { offset += diff > 0 ? "d" : "s" } for (; !zone && i < len; ) if (diff = arr[i++]) { zone = zones[diff + offset] || zones[diff.split("-")[0] + offset] } } return zone || zones[offset] } }(this.Date || this)