IE JavaScriptdateparsing错误

为什么IE不能把这个stringparsing成Date对象。

var d = Date.parse("Fri Jun 11 04:55:12 +0000 2010"); // returns NaN 

不过,它在FireFox中运行良好。 我正在运行IE 8。

谢谢。

你在IE8中获得NaN值,并且在Firefox中工作,因为string的格式因浏览器和操作系统而异。

例如,在Windows XP的IE6中,string格式如下:

 Tue Dec 05 16:47:20 CDT 2006 

但是在Windows XP的Firefox中,string是

 Tue Dec 05 2006 16:47:20 GMT-0500 

要使它与这两个浏览器兼容,您将不得不首先检查您的JavaScript代码中的浏览器,然后相应地给你的inputdatestring。

我发现jQuery全球化插件dateparsing工作最好。 其他方法有跨浏览器的问题,像date.js的东西在一段时间内没有更新。

你也不需要在页面上的dateselect器。 你可以调用类似于文档中给出的例子:

 $.datepicker.parseDate('yy-mm-dd', '2007-01-26'); 

通过创build一个date对象解决我的问题,让我把时间戳。 但为此,您需要将string转换为以下格式:

 year, month, date, hours, minutes, seconds,ms 

一个例子会是这样的:

 dateObj = new Date(year, month, date); timestamp = dateObj.getTime(); 

这工作保存在IE和FF。

IE开发人员中心:date对象(JavaScript)

Mozilla开发者networking:date

对于你的例子,你会想这样的事情:

 //your string var str = "Fri Jun 11 04:55:12 +0000 2010"; //maps months to integer from 0 to 11 var monthArray = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nev":10, "Dec":11}; //get the values from the string var regex = /^[^ ]+ ([^ ]+) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) \+(\d{4}) (\d{4})$/; match = regex.exec(str); var month = monthArray[match[1]], date = match[2], hours = match[3], minutes = match[4], seconds = match[5], ms = match[6], year = match[7]; //create date object with values var dateObject = new Date(year, month, date, hours, minutes , seconds, ms); var ts = dateObject.getTime(); //timestamp in ms 

因为+00000。 尝试添加最后一个

 var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000"); 

这可能会帮助你。 我刚刚解决了类似的问题。

使用Javascriptdate函数在IE 7中,返回NaN