25 lines
1.0 KiB
JavaScript
25 lines
1.0 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = getTimezoneOffsetInMilliseconds;
|
||
|
|
||
|
/**
|
||
|
* 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.
|
||
|
*/
|
||
|
function getTimezoneOffsetInMilliseconds(date) {
|
||
|
var 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();
|
||
|
}
|
||
|
|
||
|
module.exports = exports.default;
|