Проблема с получением информации о часовом поясе с помощью JavaScript в последней версии Firefox (64) - PullRequest
0 голосов
/ 28 января 2019

Я использую следующий фрагмент кода для определения различных значений, связанных с часовым поясом, сообщаемым операционной системой.

var oldOffset;
var dstBegin;
var dstEnd;
var dstDuration;
var inDayLightTimeFlag;
var useDayLightTimeFlag;
var arr = [];

var d = new Date();
d.setHours(12,0,0,0);
var currOffset = d.getTimezoneOffset();
var daysInYear = 365;
for(var i=1; i<=daysInYear; i++){
    d = new Date();
    //Defaulting time to 12:00PM each day as DST should have already been observed/no longer observed by that time
    d.setHours(12,0,0,0);
    d.setDate(i);
    var newOffset = d.getTimezoneOffset();
    if(i !== 1 && newOffset != oldOffset){
        if(newOffset < oldOffset){
            dstBegin = i;
        } else if(newOffset > oldOffset) {
            dstEnd = i;
        }
    }
    arr.push(newOffset);
    oldOffset = d.getTimezoneOffset();
}

var DST = Math.min.apply(null,arr);
var nonDST = Math.max.apply(null,arr);
console.log("IN DST Flag: " + inDayLightTimeFlag);
console.log("USE DST Flag: " + useDayLightTimeFlag);
console.log("Duration: " + dstDuration);
console.log("Begin: " + dstBegin);
console.log("End: " + dstEnd);

Я получил этот код из другого сообщения в переполнении стека, и какое-то время он работал нормально.Но сейчас я вижу смешанные результаты.Он отлично работает в Chrome, IE и Edge, но не работает в Firefox для определенного случая.

В случае, если у меня возникли проблемы, я устанавливаю часовой пояс компьютера на США / Центральный (у меня Windows 10) и сниму флажок перехода на летнее время.

В Chrome / IE / Edge значения, возвращаемые из приведенного выше кода:

inDayLightTimeFlag: false
useDayLightTimeFlag: false
dstDuration: 0
dstBegin: 0
dstEnd: 0

Что является правильным результатом в этом случае.

Но в Firefox я получаю следующие значения:

inDayLightTimeFlag: false
useDayLightTimeFlag: true
dstDuration: 60
dstBegin: 69
dstEnd: 307

, что неправильно.Мы протестировали его на разных версиях Firefox, и он отлично работает в 62, но проблема начинается с 63 и выше.Похоже, что это было вызвано недавним изменением Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1346211

Есть мысли?Ищите способ сделать его максимально независимым от браузера, но похоже, что исправление ошибки в Firefox могло вызвать больше проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...