gpt4 book ai didi

IE7/IE8 中的 Javascript JSON 日期解析返回 NaN

转载 作者:IT王子 更新时间:2023-10-29 03:08:13 25 4
gpt4 key购买 nike

我正在解析来自 JSON 事件提要的日期 - 但该日期在 IE7/8 中显示为“NaN”:

// Variable from JSON feed (using JQuery's $.getJSON)
var start_time = '2012-06-24T17:00:00-07:00';

// How I'm currently extracting the Month & Day
var d = new Date(start_time);
var month = d.getMonth();
var day = d.getDate();

document.write(month+'/'+day);// "6/24" in most browsers, "Nan/Nan" in IE7/8

我做错了什么?谢谢!

最佳答案

在旧版浏览器中,您可以编写一个函数来为您解析字符串。

这个方法创建了一个 Date.fromISO 方法 - 如果浏览器可以从 ISO 字符串本地获取正确的日期,则使用本地方法。

有些浏览器部分正确,但返回了错误的时区,因此仅检查 NaN 可能行不通。

填充:

(function(){
var D= new Date('2011-06-02T09:34:29+02:00');
if(!D || +D!== 1307000069000){
Date.fromISO= 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/);
for(var i= 0, L= day.length; i<L; i++){
day[i]= parseInt(day[i], 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;
}
}
else{
Date.fromISO= function(s){
return new Date(s);
}
}
})()

结果:

var start_time = '2012-06-24T17:00:00-07:00';
var d = Date.fromISO(start_time);
var month = d.getMonth();
var day = d.getDate();

alert(++month+' '+day); // returns months from 1-12

关于IE7/IE8 中的 Javascript JSON 日期解析返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020658/

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