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