diff options
Diffstat (limited to 'date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js')
-rw-r--r-- | date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js new file mode 100644 index 0000000..0b637c4 --- /dev/null +++ b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js @@ -0,0 +1,26 @@ +/** + * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. + * They usually appear for dates that denote time before the timezones were introduced + * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 + * and GMT+01:00:00 after that date) + * + * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, + * which would lead to incorrect calculations. + * + * This function returns the timezone offset in milliseconds that takes seconds in account. + */ +export default function getTimezoneOffsetInMilliseconds(date) { + const utcDate = new Date( + Date.UTC( + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() + ) + ) + utcDate.setUTCFullYear(date.getFullYear()) + return date.getTime() - utcDate.getTime() +} |