gpt4 book ai didi

javascript - 正则表达式解析 ISO-8601

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:06 39 4
gpt4 key购买 nike

作为我试图帮助解决的问题的后续:javascript date.parse difference in chrome and other browsers

我需要帮助更新我在这里找到的正则表达式:

JavaScript: Which browsers support parsing of ISO-8601 Date String with Date.parse

处理 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 日期。

最佳答案

要使其适用于格式为 2011-11-24T09:00:27+0200 的日期,只需在最后一个 之后添加一个 ?:,例如:

/^(\d{4}\-\d\d\-\d\d([tT][\d:\.]*)?)([zZ]|([+\-])(\d\d):?(\d\d))?$/

解释:

  (
\d{4}\-\d\d\-\d\d # date
([tT][\d:\.]*)? # optional time
)
(
[zZ] # UTC time zone
| # or
([+\-]) # offset sign
(\d\d) # hour offset
:? # optional delimiter
(\d\d) # minute offset
)? # time zone is optional

其余代码不需要任何更改,并且该函数以前支持的所有格式仍然有效(与之前的答案不同,它打破了四位数的偏移量)。

关于javascript - 正则表达式解析 ISO-8601,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269349/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com