datezone
Version:
A lightweight and comprehensive date and timeZone utility library for JavaScript.
225 lines • 5.44 kB
JavaScript
// UTC Timezones - single source of truth
const UTC_TIMEZONE_NAMES = [
"Africa/Abidjan",
"Africa/Accra",
"Africa/Bamako",
"Africa/Banjul",
"Africa/Bissau",
"Africa/Conakry",
"Africa/Dakar",
"Africa/Freetown",
"Africa/Lome",
"Africa/Monrovia",
"Africa/Nouakchott",
"Africa/Ouagadougou",
"Africa/Sao_Tome",
"America/Danmarkshavn",
"Atlantic/Reykjavik",
"Atlantic/St_Helena",
"Etc/GMT",
"Etc/GMT-0",
"Etc/GMT+0",
"Etc/GMT0",
"Etc/Greenwich",
"Etc/UCT",
"Etc/Universal",
"Etc/UTC",
"Etc/Zulu",
"GMT",
"GMT-0",
"GMT+0",
"GMT0",
"Greenwich",
"UCT",
"UTC",
"Universal",
"Zulu",
];
// DST Timezones - single source of truth
const DST_TIMEZONE_NAMES = [
"America/Adak",
"America/Anchorage",
"America/Asuncion",
"America/Bahia_Banderas",
"America/Boise",
"America/Cambridge_Bay",
"America/Campo_Grande",
"America/Cancun",
"America/Chicago",
"America/Chihuahua",
"America/Cuiaba",
"America/Denver",
"America/Detroit",
"America/Edmonton",
"America/Glace_Bay",
"America/Godthab",
"America/Goose_Bay",
"America/Grand_Turk",
"America/Halifax",
"America/Havana",
"America/Indiana/Indianapolis",
"America/Indiana/Knox",
"America/Indiana/Marengo",
"America/Indiana/Petersburg",
"America/Indiana/Tell_City",
"America/Indiana/Vevay",
"America/Indiana/Vincennes",
"America/Indiana/Winamac",
"America/Inuvik",
"America/Iqaluit",
"America/Juneau",
"America/Kentucky/Louisville",
"America/Kentucky/Monticello",
"America/Los_Angeles",
"America/Matamoros",
"America/Mazatlan",
"America/Menominee",
"America/Merida",
"America/Metlakatla",
"America/Mexico_City",
"America/Miquelon",
"America/Moncton",
"America/Monterrey",
"America/Montevideo",
"America/Nassau",
"America/New_York",
"America/Nome",
"America/North_Dakota/Beulah",
"America/North_Dakota/Center",
"America/North_Dakota/New_Salem",
"America/Ojinaga",
"America/Pangnirtung",
"America/Port-au-Prince",
"America/Rainy_River",
"America/Rankin_Inlet",
"America/Resolute",
"America/Santiago",
"America/Sao_Paulo",
"America/Scoresbysund",
"America/Sitka",
"America/St_Johns",
"America/Tijuana",
"America/Toronto",
"America/Vancouver",
"America/Whitehorse",
"America/Winnipeg",
"America/Yakutat",
"Antarctica/Macquarie",
"Antarctica/Troll",
"Asia/Amman",
"Asia/Beirut",
"Asia/Damascus",
"Asia/Famagusta",
"Asia/Gaza",
"Asia/Hebron",
"Asia/Jerusalem",
"Asia/Nicosia",
"Asia/Tehran",
"Atlantic/Azores",
"Atlantic/Bermuda",
"Atlantic/Canary",
"Atlantic/Faroe",
"Atlantic/Madeira",
"Australia/Adelaide",
"Australia/Broken_Hill",
"Australia/Currie",
"Australia/Hobart",
"Australia/Lord_Howe",
"Australia/Melbourne",
"Australia/Sydney",
"Europe/Amsterdam",
"Europe/Andorra",
"Europe/Astrakhan",
"Europe/Athens",
"Europe/Belgrade",
"Europe/Berlin",
"Europe/Bratislava",
"Europe/Brussels",
"Europe/Bucharest",
"Europe/Budapest",
"Europe/Busingen",
"Europe/Chisinau",
"Europe/Copenhagen",
"Europe/Dublin",
"Europe/Gibraltar",
"Europe/Guernsey",
"Europe/Helsinki",
"Europe/Isle_of_Man",
"Europe/Jersey",
"Europe/Kaliningrad",
"Europe/Kiev",
"Europe/Kirov",
"Europe/Lisbon",
"Europe/Ljubljana",
"Europe/London",
"Europe/Luxembourg",
"Europe/Madrid",
"Europe/Malta",
"Europe/Mariehamn",
"Europe/Monaco",
"Europe/Oslo",
"Europe/Paris",
"Europe/Podgorica",
"Europe/Prague",
"Europe/Riga",
"Europe/Rome",
"Europe/Samara",
"Europe/San_Marino",
"Europe/Sarajevo",
"Europe/Saratov",
"Europe/Simferopol",
"Europe/Skopje",
"Europe/Sofia",
"Europe/Stockholm",
"Europe/Tallinn",
"Europe/Tirane",
"Europe/Ulyanovsk",
"Europe/Vaduz",
"Europe/Vienna",
"Europe/Vilnius",
"Europe/Volgograd",
"Europe/Warsaw",
"Europe/Zagreb",
"Europe/Zurich",
"Pacific/Auckland",
"Pacific/Chatham",
"Pacific/Easter",
"Pacific/Fiji",
"Pacific/Norfolk",
"US/Alaska",
"US/Aleutian",
"US/Central",
"US/Eastern",
"US/Mountain",
"US/Pacific",
];
// Create Sets for O(1) lookup performance
const UTC_TIMEZONES = new Set(UTC_TIMEZONE_NAMES);
const DST_TIMEZONES = new Set(DST_TIMEZONE_NAMES);
/**
* Checks if utc.
*
* @param timeZone - The IANA timeZone identifier to check
* @returns `true` if the timeZone is UTC, `false` otherwise
* @see https://datezone.dev/docs/reference/timezone#isutc
*/
export function isUTC(timeZone) {
return UTC_TIMEZONES.has(timeZone);
}
/**
* Checks if dst.
*
* @param timeZone - The IANA timeZone identifier to check
* @returns `true` if the timeZone is a DST timeZone, `false` otherwise.
* @see https://datezone.dev/docs/reference/timezone#isdst
*/
export function isDST(timeZone) {
return DST_TIMEZONES.has(timeZone);
}
/**
* Get local timezone.
*
* @see https://datezone.dev/docs/reference/timezone#getlocaltimezone
*/
export const getLocalTimezone = () => Intl.DateTimeFormat().resolvedOptions().timeZone;
//# sourceMappingURL=timezone.pub.js.map