将日期传递给Date对象会导致IE8中出现未定义的变量

时间:2010-10-30 00:39:30

标签: javascript internet-explorer

我已经坚持了很长一段时间,如果可能的话,我会很感激。

基本上我从API以yyyy-mm-dd格式收到日期。除此之外,我希望显示工作日。以下是相关代码:

// jsonDate is in the format yyyy-mm-dd 

var splitDate = jsonDate.split("-");
var joinedDate = splitDate.join(",");      

var myDate = new Date(joinedDate);

var weekday=new Array(7);
weekday[0]="Sun";
weekday[1]="Mon";
weekday[2]="Tue";
weekday[3]="Wed";
weekday[4]="Thu";
weekday[5]="Fri";
weekday[6]="Sat"; 

var dayOfTheWeek = weekday[myDate.getDay()];

一切都在Firefox中运行,但在IE8中“dayOfTheWeek”未定义。当我登录时,IE Developer工具还将“myDate”显示为“NaN”。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

以这种方式创建日期:

var myDate = new Date(splitDate[0],splitDate[1]-1,splitDate[2]);

Date期望将部分作为单个参数,而不是格式化字符串。

还有一个传递字符串的选项,例如:

MonthAsString Day , year hours:minutes:seconds

但我认为你最好不要使用它,它可能取决于javascript-version,哪种格式可以接受。

答案 1 :(得分:0)

function dstring(str){
    //yyyy-mm-dd
    str= str.split(/\D+/);  
    str[1]-= 1;
    try{
        var d= new Date();
        d.setHours(0,0,0,0);
        d.setFullYear.apply(d, str);
    }
    catch(er){
        return 'Bad date-'+str;
    }
    return d;
}

<强> dstring( '2010-10-21')

/*  returned value: (Date)
Thu Oct 21 2010 00:00:00 GMT-0400 (Eastern Daylight Time)
*/