Часовой пояс JavaScript не подходит для прошлых правил перехода на летнее время

В 2007 году изменились дни перехода на летнее время. Любая дата, попадающая в расширенный диапазон летнего времени до этого изменения, сообщает о неправильном смещении часового пояса в Chrome и Firefox. Это'как Firefox и Chrome неОбратите внимание на то, что раньше у ДСТ были разные дни.

Если вы запустите следующий скрипт, он сообщит о смещении в 240 минут. Тот'Неправильно, он должен сообщить 300 минут. IE10 делает это правильно. Кто-нибудь знает об исправлении?

alert(new Date('11/04/2004').getTimezoneOffset());

ОБНОВИТЬ:

Вот'Это интересный фрагмент кода, который я только что взломал (см. ниже). Это'действительно удивительно, как далеко большинство дат в каждом браузере, кроме IE. Сравните даты начала и окончания с этим:http://www.timeanddate.com/worldclock/timezone.html?n=77&syear = 2000

В итоге я просто заменил датуПрототип для getTimezoneOffset с моим собственным, который рассчитывает его на основе жестко закодированной таблицы. Это работает для нас, потому что мы ведем бизнес только в США.о худшем из возможных решений, которое я могу себе представить, хотя ...



    
        Moment Test
        
        
        
var lastOffset = null;
var $tbody = null;
var endDate = new Date('01/01/2021');

function addDate(d) {
    if($tbody === null)
        $tbody = $('#dates');

    var offset = d.getTimezoneOffset();
    var s = '';
    if(lastOffset != offset) {
        if(lastOffset != null)
            s = '';
        lastOffset = offset;
    }
    else {
        s = '';
    }
    var m = new moment(d);
    s += '' + m.format('YYYY-MM-DD') + '' + m.format('YYYY-MM-DDTHH:mm:ssZ') + '' + m.format('YYYY-MM-DDTHH:mm:ss') + '' + offset + '';
    $tbody.append($(s));
    d.setDate(d.getDate() + 1);

    if(d < endDate)
        window.setTimeout(function(){addDate(d)}, 0);
}

        
    
    
        Fill Table
        
            DateDate 2Date 3TZ Offset
            
        
    

Ответы на вопрос(2)

Ваш ответ на вопрос