regexp Parsing ISO-8601

В ответ на вопрос, с которым я пытаюсь помочь: javascript date.parse разница в Chrome и других браузерах

Мне нужна помощь в обновлении регулярного выражения, которое я нашел здесь:

JavaScript: Какие браузеры поддерживают синтаксический анализ строки даты ISO-8601 с помощью Date.parse

для обработки 201 1-11-24T09: 00: 27 + 0200

В настоящее время предполагается, что он обрабатывает только 2011-11-24T09: 00: 27Z версию даты ISO

, т.е. rx в

function(s){
    var day, tz, 
    rx= /^(\d{4}\-\d\d\-\d\d([tT][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/, 
    p= rx.exec(s) || [];
    if(p[1]){
        day= p[1].split(/\D/).map(function(itm){
            return parseInt(itm, 10) || 0;
        });
        day[1]-= 1;
        day= new Date(Date.UTC.apply(Date, day));
        if(!day.getDate()) return NaN;
        if(p[5]){
            tz= parseInt(p[5], 10)*60;
            if(p[6]) tz += parseInt(p[6], 10);
            if(p[4]== "+") tz*= -1;
            if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
        }
        return day;
    }
    return NaN;
}

, чтобы заставить эту скрипку работать с IE и Safari


ОБНОВЛЕНИЕ: ответы сработали. Теперь я могу помочь другим проанализировать дату ISO, возвращаемую API facebook.

5
задан Community 23 May 2017 в 12:23
поделиться