From 3a72f7e82cfb1ff2af085c2e4963795faaf562bf Mon Sep 17 00:00:00 2001 From: Guzeen Date: Sun, 25 Jul 2021 15:33:29 +0700 Subject: [PATCH] - removed regex pattern to check iana string - switched pattern-compare timezone to intl-compare timezone --- src/_lib/tzParseTimezone/index.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/_lib/tzParseTimezone/index.js b/src/_lib/tzParseTimezone/index.js index 697354c..2b7aa2e 100644 --- a/src/_lib/tzParseTimezone/index.js +++ b/src/_lib/tzParseTimezone/index.js @@ -7,8 +7,7 @@ var patterns = { timezone: /([Z+-].*)$/, timezoneZ: /^(Z)$/, timezoneHH: /^([+-])(\d{2})$/, - timezoneHHMM: /^([+-])(\d{2}):?(\d{2})$/, - timezoneIANA: /(UTC|(?:[a-zA-Z]+\/[a-zA-Z_-]+(?:\/[a-zA-Z_]+)?))$/, + timezoneHHMM: /^([+-])(\d{2}):?(\d{2})$/ } // Parse various time zone offset formats to an offset in milliseconds @@ -52,8 +51,7 @@ export default function tzParseTimezone(timezoneString, date, isUtcDate) { } // IANA time zone - token = patterns.timezoneIANA.exec(timezoneString) - if (token) { + if (isValidTimezoneIANAString(timezoneString)) { date = new Date(date || Date.now()) var utcDate = isUtcDate ? date : toUtcDate(date) @@ -126,3 +124,13 @@ function validateTimezone(hours, minutes) { return true } + +function isValidTimezoneIANAString(timeZoneString) { + try { + Intl.DateTimeFormat(undefined, {timeZone: timeZoneString}); + return true; + } + catch { + return false; + } +}