作为我正在协助解答的问题的后续:javascript date.parse difference in chrome and other browsers
我需要帮助更新我在这里找到的正则表达式:
JavaScript: Which browsers support parsing of ISO-8601 Date String with Date.parse
以处理
即rx在
2011-11-24T09:00:27+0200
它目前只能处理ISO日期的2011-11-24T09:00:27Z
版本。即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;
}
使this fiddle在IE和Safari中工作
更新:这些答案有效。现在我可以帮助其他人解析从Facebook API返回的ISO日期。