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