为什么IE无法将此字符串解析为Date对象。
var d = Date.parse("Fri Jun 11 04:55:12 +0000 2010"); // returns NaN
但是,它在FireFox中运行良好。我正在运行IE 8。
感谢。
答案 0 :(得分:10)
我发现jQuery Globalization Plugin日期解析效果最好。其他方法有跨浏览器问题,像date.js这样的东西在很长一段时间内都没有更新。
页面上也不需要datePicker。您可以调用与文档中给出的示例类似的内容:
$.datepicker.parseDate('yy-mm-dd', '2007-01-26');
答案 1 :(得分:9)
您在IE 8中获得NaN
值并且在Firefox中工作,因为字符串的格式因浏览器和操作系统而异。
例如,在IE6 for Windows XP中,字符串采用以下格式:
Tue Dec 05 16:47:20 CDT 2006
但在Firefox for Windows XP中,字符串是
Tue Dec 05 2006 16:47:20 GMT-0500
要使其与两种浏览器兼容,您必须首先检查您的浏览器 javascript代码,然后相应地给你输入日期字符串。
答案 2 :(得分:4)
通过创建一个日期对象来解决我的问题,让我把它给它回时间戳。 但为此你需要将字符串转换为这种格式:
year, month, date, hours, minutes, seconds,ms
一个例子就像:
dateObj = new Date(year, month, date);
timestamp = dateObj.getTime();
这可以保存在IE和FF中。
IE Dev Center: Date Object (JavaScript)
对于你的例子你会这样:
//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
答案 3 :(得分:1)
如果您的日期像datetime
一样存储在SQL 2020-04-07 05:30:00
中,并且想在IE中进行解析。当您使用new Date()
在IE中使用JavaScript解析时,它会输出无效日期,而最新版本的Chrome和Firefox会正确解析该日期。
您必须用来自SQL的<space>
字符串中的T
替换datetime
。
let myDate = '2020-04-07 05:30:00';
let myFormattedDate = myDate.replace(' ', 'T'); // '2020-04-07T05:30:00'
console.log(new Date(myFormattedDate));
答案 4 :(得分:0)
因为+00000。尝试添加最后一个
var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000");
答案 5 :(得分:-1)
这可能会对你有所帮助。我刚刚解决了类似的问题。