Skip to content

Instantly share code, notes, and snippets.

@timrwood
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timrwood/988c9480a78e37b93970 to your computer and use it in GitHub Desktop.
Save timrwood/988c9480a78e37b93970 to your computer and use it in GitHub Desktop.
Alternate moment timezone current timezone filters.
}
function matchesAtIndex (zone, i) {
var aDay = 50 * 24 * 60 * 60 * 1000;
if (i < zone.offsets.length - 1 && new Date(zone.untils[i] + aDay).getTimezoneOffset() !== zone.offsets[i + 1]) {
// console.log(zone.name, new Date(zone.untils[i] + aDay).getTimezoneOffset(), zone.offsets[i + 1], '+1');
// console.log(zone.name, zone.untils[i + 1], aDay, zone.untils[i + 1] + aDay);
return false;
}
// console.log(zone.name, new Date(zone.untils[i] - aDay).getTimezoneOffset(), zone.offsets[i]);
return new Date(zone.untils[i] - aDay).getTimezoneOffset() === zone.offsets[i];
}
function matchesCurrentYearOffsets (name) {
var zone = getZone(name);
return (zone.offset(jan) === jan.getTimezoneOffset()) && (zone.offset(jun) === jun.getTimezoneOffset());
var i = zone._index(now);
// console.log(zone.name, 'i - 1');
if (i > 0 && !matchesAtIndex(zone, i - 1)) {
return false;
}
// console.log(zone.name, 'i');
return matchesAtIndex(zone, i);
}
+00:00/+00:00 : Africa/Abidjan Africa/Accra Africa/Bamako Africa/Banjul Africa/Bissau Africa/Casablanca Africa/Conakry Africa/Dakar Africa/El_Aaiun Africa/Freetown Africa/Lome Africa/Monrovia Africa/Nouakchott Africa/Ouagadougou Africa/Sao_Tome Africa/Timbuktu America/Danmarkshavn Atlantic/Reykjavik Atlantic/St_Helena Etc/GMT Etc/GMT+0 Etc/GMT-0 Etc/GMT0 Etc/Greenwich Etc/UCT Etc/UTC Etc/Universal Etc/Zulu GMT GMT+0 GMT-0 GMT0 Greenwich Iceland UCT UTC Universal Zulu
+00:00/+01:00 : Atlantic/Canary Atlantic/Faeroe Atlantic/Faroe Atlantic/Madeira Eire Europe/Belfast Europe/Dublin Europe/Guernsey Europe/Isle_of_Man Europe/Jersey Europe/Lisbon Europe/London GB GB-Eire Portugal WET
+00:00/+02:00 : Antarctica/Troll
+01:00/+01:00 : Africa/Algiers Africa/Bangui Africa/Brazzaville Africa/Douala Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Luanda Africa/Malabo Africa/Ndjamena Africa/Niamey Africa/Porto-Novo Africa/Tunis Etc/GMT-1
+01:00/+02:00 : Africa/Ceuta Arctic/Longyearbyen Atlantic/Jan_Mayen CET Europe/Amsterdam Europe/Andorra Europe/Belgrade Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Budapest Europe/Busingen Europe/Copenhagen Europe/Gibraltar Europe/Ljubljana Europe/Luxembourg Europe/Madrid Europe/Malta Europe/Monaco Europe/Oslo Europe/Paris Europe/Podgorica Europe/Prague Europe/Rome Europe/San_Marino Europe/Sarajevo Europe/Skopje Europe/Stockholm Europe/Tirane Europe/Vaduz Europe/Vatican Europe/Vienna Europe/Warsaw Europe/Zagreb Europe/Zurich MET Poland
+02:00/+01:00 : Africa/Windhoek
+02:00/+02:00 : Africa/Blantyre Africa/Bujumbura Africa/Cairo Africa/Gaborone Africa/Harare Africa/Johannesburg Africa/Kigali Africa/Lubumbashi Africa/Lusaka Africa/Maputo Africa/Maseru Africa/Mbabane Africa/Tripoli Egypt Etc/GMT-2 Europe/Kaliningrad Libya
+02:00/+03:00 : Asia/Amman Asia/Beirut Asia/Damascus Asia/Gaza Asia/Hebron Asia/Istanbul Asia/Jerusalem Asia/Nicosia Asia/Tel_Aviv EET Europe/Athens Europe/Bucharest Europe/Chisinau Europe/Helsinki Europe/Istanbul Europe/Kiev Europe/Mariehamn Europe/Nicosia Europe/Riga Europe/Sofia Europe/Tallinn Europe/Tiraspol Europe/Uzhgorod Europe/Vilnius Europe/Zaporozhye Israel Turkey
+03:00/+03:00 : Africa/Addis_Ababa Africa/Asmara Africa/Asmera Africa/Dar_es_Salaam Africa/Djibouti Africa/Juba Africa/Kampala Africa/Khartoum Africa/Mogadishu Africa/Nairobi Antarctica/Syowa Asia/Aden Asia/Baghdad Asia/Bahrain Asia/Kuwait Asia/Qatar Asia/Riyadh Etc/GMT-3 Europe/Minsk Europe/Moscow Europe/Simferopol Europe/Volgograd Indian/Antananarivo Indian/Comoro Indian/Mayotte W-SU
+03:30/+04:30 : Asia/Tehran Iran
+04:00/+04:00 : Asia/Dubai Asia/Muscat Asia/Tbilisi Asia/Yerevan Etc/GMT-4 Europe/Samara Indian/Mahe Indian/Mauritius Indian/Reunion
+04:00/+05:00 : Asia/Baku
+04:30/+04:30 : Asia/Kabul
+05:00/+05:00 : Antarctica/Mawson Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Ashkhabad Asia/Dushanbe Asia/Karachi Asia/Oral Asia/Samarkand Asia/Tashkent Asia/Yekaterinburg Etc/GMT-5 Indian/Kerguelen Indian/Maldives
+05:30/+05:30 : Asia/Calcutta Asia/Colombo Asia/Kolkata
+05:45/+05:45 : Asia/Kathmandu Asia/Katmandu
+06:00/+06:00 : Antarctica/Vostok Asia/Almaty Asia/Bishkek Asia/Dacca Asia/Dhaka Asia/Kashgar Asia/Novosibirsk Asia/Omsk Asia/Qyzylorda Asia/Thimbu Asia/Thimphu Asia/Urumqi Etc/GMT-6 Indian/Chagos
+06:30/+06:30 : Asia/Rangoon Indian/Cocos
+07:00/+07:00 : Antarctica/Davis Asia/Bangkok Asia/Ho_Chi_Minh Asia/Hovd Asia/Jakarta Asia/Krasnoyarsk Asia/Novokuznetsk Asia/Phnom_Penh Asia/Pontianak Asia/Saigon Asia/Vientiane Etc/GMT-7 Indian/Christmas
+08:00/+08:00 : Antarctica/Casey Asia/Brunei Asia/Chita Asia/Choibalsan Asia/Chongqing Asia/Chungking Asia/Harbin Asia/Hong_Kong Asia/Irkutsk Asia/Kuala_Lumpur Asia/Kuching Asia/Macao Asia/Macau Asia/Makassar Asia/Manila Asia/Shanghai Asia/Singapore Asia/Taipei Asia/Ujung_Pandang Asia/Ulaanbaatar Asia/Ulan_Bator Australia/Perth Australia/West Etc/GMT-8 Hongkong PRC ROC Singapore
+08:45/+08:45 : Australia/Eucla
+09:00/+09:00 : Asia/Dili Asia/Jayapura Asia/Khandyga Asia/Pyongyang Asia/Seoul Asia/Tokyo Asia/Yakutsk Etc/GMT-9 Japan Pacific/Palau ROK
+09:30/+09:30 : Australia/Darwin Australia/North
+10:00/+10:00 : Antarctica/DumontDUrville Asia/Magadan Asia/Sakhalin Asia/Ust-Nera Asia/Vladivostok Australia/Brisbane Australia/Lindeman Australia/Queensland Etc/GMT-10 Pacific/Chuuk Pacific/Guam Pacific/Port_Moresby Pacific/Saipan Pacific/Truk Pacific/Yap
+10:30/+09:30 : Australia/Adelaide Australia/Broken_Hill Australia/South Australia/Yancowinna
+11:00/+10:00 : Australia/ACT Australia/Canberra Australia/Currie Australia/Hobart Australia/Melbourne Australia/NSW Australia/Sydney Australia/Tasmania Australia/Victoria
+11:00/+10:30 : Australia/LHI Australia/Lord_Howe
+11:00/+11:00 : Antarctica/Macquarie Asia/Srednekolymsk Etc/GMT-11 Pacific/Bougainville Pacific/Efate Pacific/Guadalcanal Pacific/Kosrae Pacific/Noumea Pacific/Pohnpei Pacific/Ponape
+11:30/+11:30 : Pacific/Norfolk
+12:00/+12:00 : Asia/Anadyr Asia/Kamchatka Etc/GMT-12 Kwajalein Pacific/Funafuti Pacific/Kwajalein Pacific/Majuro Pacific/Nauru Pacific/Tarawa Pacific/Wake Pacific/Wallis
+13:00/+12:00 : Antarctica/McMurdo Antarctica/South_Pole NZ Pacific/Auckland Pacific/Fiji
+13:00/+13:00 : Etc/GMT-13 Pacific/Enderbury Pacific/Fakaofo Pacific/Tongatapu
+13:45/+12:45 : NZ-CHAT Pacific/Chatham
+14:00/+13:00 : Pacific/Apia
+14:00/+14:00 : Etc/GMT-14 Pacific/Kiritimati
-01:00/+00:00 : America/Scoresbysund Atlantic/Azores
-01:00/-01:00 : Atlantic/Cape_Verde Etc/GMT+1
-02:00/-02:00 : America/Noronha Atlantic/South_Georgia Brazil/DeNoronha Etc/GMT+2
-02:00/-03:00 : America/Montevideo America/Sao_Paulo Brazil/East
-03:00/-02:00 : America/Godthab America/Miquelon
-03:00/-03:00 : America/Araguaina America/Argentina/Buenos_Aires America/Argentina/Catamarca America/Argentina/ComodRivadavia America/Argentina/Cordoba America/Argentina/Jujuy America/Argentina/La_Rioja America/Argentina/Mendoza America/Argentina/Rio_Gallegos America/Argentina/Salta America/Argentina/San_Juan America/Argentina/San_Luis America/Argentina/Tucuman America/Argentina/Ushuaia America/Bahia America/Belem America/Buenos_Aires America/Catamarca America/Cayenne America/Cordoba America/Fortaleza America/Jujuy America/Maceio America/Mendoza America/Paramaribo America/Recife America/Rosario America/Santarem Antarctica/Rothera Atlantic/Stanley Etc/GMT+3
-03:00/-04:00 : America/Asuncion America/Campo_Grande America/Cuiaba America/Santiago Antarctica/Palmer Chile/Continental
-03:30/-02:30 : America/St_Johns Canada/Newfoundland
-04:00/-03:00 : America/Glace_Bay America/Goose_Bay America/Halifax America/Moncton America/Thule Atlantic/Bermuda Canada/Atlantic
-04:00/-04:00 : America/Anguilla America/Antigua America/Aruba America/Barbados America/Blanc-Sablon America/Boa_Vista America/Curacao America/Dominica America/Grenada America/Guadeloupe America/Guyana America/Kralendijk America/La_Paz America/Lower_Princes America/Manaus America/Marigot America/Martinique America/Montserrat America/Port_of_Spain America/Porto_Velho America/Puerto_Rico America/Santo_Domingo America/St_Barthelemy America/St_Kitts America/St_Lucia America/St_Thomas America/St_Vincent America/Tortola America/Virgin Brazil/West Etc/GMT+4
-04:30/-04:30 : America/Caracas
-05:00/-04:00 : America/Detroit America/Fort_Wayne America/Grand_Turk America/Havana America/Indiana/Indianapolis America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Indiana/Vincennes America/Indiana/Winamac America/Indianapolis America/Iqaluit America/Kentucky/Louisville America/Kentucky/Monticello America/Louisville America/Montreal America/Nassau America/New_York America/Nipigon America/Pangnirtung America/Port-au-Prince America/Thunder_Bay America/Toronto Canada/Eastern Cuba EST5EDT US/East-Indiana US/Eastern US/Michigan
-05:00/-05:00 : America/Atikokan America/Bogota America/Cayman America/Coral_Harbour America/Eirunepe America/Guayaquil America/Jamaica America/Lima America/Panama America/Porto_Acre America/Rio_Branco Brazil/Acre EST Etc/GMT+5 Jamaica
-05:00/-06:00 : Chile/EasterIsland Pacific/Easter
-06:00/-05:00 : America/Bahia_Banderas America/Cancun America/Chicago America/Indiana/Knox America/Indiana/Tell_City America/Knox_IN America/Matamoros America/Menominee America/Merida America/Mexico_City America/Monterrey America/North_Dakota/Beulah America/North_Dakota/Center America/North_Dakota/New_Salem America/Rainy_River America/Rankin_Inlet America/Resolute America/Winnipeg CST6CDT Canada/Central Mexico/General US/Central US/Indiana-Starke
-06:00/-06:00 : America/Belize America/Costa_Rica America/El_Salvador America/Guatemala America/Managua America/Regina America/Swift_Current America/Tegucigalpa Canada/East-Saskatchewan Canada/Saskatchewan Etc/GMT+6 Pacific/Galapagos
-07:00/-06:00 : America/Boise America/Cambridge_Bay America/Chihuahua America/Denver America/Edmonton America/Inuvik America/Mazatlan America/Ojinaga America/Shiprock America/Yellowknife Canada/Mountain MST7MDT Mexico/BajaSur Navajo US/Mountain
-07:00/-07:00 : America/Creston America/Dawson_Creek America/Hermosillo America/Phoenix Etc/GMT+7 MST US/Arizona
-08:00/-07:00 : America/Dawson America/Ensenada America/Los_Angeles America/Santa_Isabel America/Tijuana America/Vancouver America/Whitehorse Canada/Pacific Canada/Yukon Mexico/BajaNorte PST8PDT US/Pacific US/Pacific-New
-08:00/-08:00 : America/Metlakatla Etc/GMT+8 Pacific/Pitcairn
-09:00/-08:00 : America/Anchorage America/Juneau America/Nome America/Sitka America/Yakutat US/Alaska
-09:00/-09:00 : Etc/GMT+9 Pacific/Gambier
-09:30/-09:30 : Pacific/Marquesas
-10:00/-09:00 : America/Adak America/Atka US/Aleutian
-10:00/-10:00 : Etc/GMT+10 HST Pacific/Honolulu Pacific/Johnston Pacific/Rarotonga Pacific/Tahiti US/Hawaii
-11:00/-11:00 : Etc/GMT+11 Pacific/Midway Pacific/Niue Pacific/Pago_Pago Pacific/Samoa US/Samoa
-12:00/-12:00 : Etc/GMT+12
+00:00/+00:00 : Etc/UTC
+00:00/+01:00 : Europe/London
+00:00/+02:00 : Antarctica/Troll
+01:00/+01:00 : Africa/Lagos
+01:00/+02:00 : Europe/Berlin
+02:00/+01:00 : Africa/Windhoek
+02:00/+02:00 : Africa/Johannesburg
+02:00/+03:00 : Asia/Beirut
+03:00/+03:00 : Europe/Moscow
+03:30/+04:30 : Asia/Tehran
+04:00/+04:00 : Asia/Dubai
+04:00/+05:00 : Asia/Baku
+04:30/+04:30 : Asia/Kabul
+05:00/+05:00 : Asia/Yekaterinburg
+05:30/+05:30 : Asia/Kolkata
+05:45/+05:45 : Asia/Kathmandu
+06:00/+06:00 : Asia/Omsk
+06:30/+06:30 : Asia/Rangoon
+07:00/+07:00 : Asia/Krasnoyarsk
+08:00/+08:00 : Asia/Shanghai
+08:45/+08:45 : Australia/Eucla
+09:00/+09:00 : Asia/Yakutsk
+09:30/+09:30 : Australia/Darwin
+10:00/+10:00 : Australia/Brisbane
+10:30/+09:30 : Australia/Adelaide
+11:00/+10:00 : Australia/Sydney
+11:00/+10:30 : Australia/Lord_Howe
+11:00/+11:00 : Pacific/Noumea
+11:30/+11:30 : Pacific/Norfolk
+12:00/+12:00 : Pacific/Tarawa
+13:00/+12:00 : Pacific/Auckland
+13:00/+13:00 : Pacific/Tongatapu
+13:45/+12:45 : Pacific/Chatham
+14:00/+13:00 : Pacific/Apia
+14:00/+14:00 : Pacific/Kiritimati
-01:00/+00:00 : Atlantic/Azores
-01:00/-01:00 : Atlantic/Cape_Verde
-02:00/-02:00 : America/Noronha
-02:00/-03:00 : America/Montevideo
-03:00/-02:00 : America/Godthab
-03:00/-03:00 : America/Argentina/Buenos_Aires
-03:00/-04:00 : America/Santiago
-03:30/-02:30 : America/St_Johns
-04:00/-03:00 : America/Halifax
-04:00/-04:00 : America/Santo_Domingo
-04:30/-04:30 : America/Caracas
-05:00/-04:00 : America/New_York
-05:00/-05:00 : America/Bogota
-05:00/-06:00 : Pacific/Easter
-06:00/-05:00 : America/Chicago
-06:00/-06:00 : America/Guatemala
-07:00/-06:00 : America/Denver
-07:00/-07:00 : America/Phoenix
-08:00/-07:00 : America/Los_Angeles
-08:00/-08:00 : Pacific/Pitcairn
-09:00/-08:00 : America/Anchorage
-09:00/-09:00 : Pacific/Gambier
-09:30/-09:30 : Pacific/Marquesas
-10:00/-09:00 : America/Adak
-10:00/-10:00 : Pacific/Honolulu
-11:00/-11:00 : Pacific/Pago_Pago
-12:00/-12:00 : Etc/GMT+12
var moment = require('./index');
var times = {}
function key(month, name) {
return moment.tz([2015, month, 1], name).utcOffset()
}
moment.tz.names().forEach(function (name) {
var k = key(0, name) + ' ' + key(6, name);
times[k] = times[k] || [];
times[k].push(name);
})
whitelist = ['Pacific/Majuro','Pacific/Pago_Pago','America/Adak','Pacific/Honolulu','Pacific/Marquesas','Pacific/Gambier','America/Anchorage','America/Los_Angeles','Pacific/Pitcairn','America/Phoenix','America/Denver','America/Guatemala','America/Chicago','Pacific/Easter','America/Bogota','America/New_York','America/Caracas','America/Halifax','America/Santo_Domingo','America/Santiago','America/St_Johns','America/Godthab','America/Argentina/Buenos_Aires','America/Montevideo','America/Noronha','America/Noronha','Atlantic/Azores','Atlantic/Cape_Verde','Etc/UTC','Europe/London','Europe/Berlin','Africa/Lagos','Africa/Windhoek','Asia/Beirut','Africa/Johannesburg','Asia/Baghdad','Europe/Moscow','Asia/Tehran','Asia/Dubai','Asia/Baku','Asia/Kabul','Asia/Yekaterinburg','Asia/Karachi','Asia/Kolkata','Asia/Kathmandu','Asia/Dhaka','Asia/Omsk','Asia/Rangoon','Asia/Krasnoyarsk','Asia/Jakarta','Asia/Shanghai','Asia/Irkutsk','Australia/Eucla','Australia/Eucla','Asia/Yakutsk','Asia/Tokyo','Australia/Darwin','Australia/Adelaide','Australia/Brisbane','Asia/Vladivostok','Australia/Sydney','Australia/Lord_Howe','Asia/Kamchatka','Pacific/Noumea','Pacific/Norfolk','Pacific/Auckland','Pacific/Tarawa','Pacific/Chatham','Pacific/Tongatapu','Pacific/Apia','Pacific/Kiritimati', 'Asia/Ulaanbaatar', 'America/Campo_Grande']
Object.keys(times).forEach(function (key) {
times[key].forEach(function (name) {
if (whitelist.indexOf(name) > -1) {
times[key] = name
}
})
})
function toNem (z) {
return moment().utcOffset(+z).format('Z')
}
function zero(number, targetLength, forceSign) {
var output = '' + number;
while (output.length < targetLength) {
output = ' ' + output;
}
return output;
}
var names = []
console.log(Object.keys(times).map(function (k) {
var ks = k.split(' ')
var name = (times[k].join ? times[k].join(' ') : times[k]);
names.push(name)
return '"test january ' + toNem(ks[0]) + ' july ' + toNem(ks[1]) + '" : makeCurrentZoneTest(' + zero(ks[0], 5) + ', ' + zero(ks[1], 5) + ', "' + name + '"),';
}).sort().join('\n'))
var hash = {}
names.forEach(function (k) {
var s = k.replace(/\s/g, '_').split('/');
var t = s.shift().toLowerCase()
s = s.join('_').toLowerCase()
hash[t] = hash[t] || []
hash[t].push(s);
})
Object.keys(hash).forEach(function(k) {
hash[k] = hash[k].join(' ')
})
console.log(hash);
{
africa: 'johannesburg lagos windhoek'
america: 'adak anchorage argentina_buenos_aires bogota caracas chicago denver godthab guatemala halifax los_angeles montevideo new_york noronha phoenix santiago santo_domingo st_johns'
antarctica: 'troll'
asia: 'baku beirut dubai kabul kathmandu kolkata krasnoyarsk omsk rangoon shanghai tehran yakutsk yekaterinburg'
atlantic: 'azores cape_verde'
australia: 'adelaide brisbane darwin eucla lord_howe sydney'
etc: 'utc'
europe: 'berlin london moscow'
pacific: 'apia auckland chatham easter gambier honolulu kiritimati marquesas norfolk noumea pago_pago pitcairn tarawa tongatapu'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment