46

这里相对简单的 javascript,不知道为什么 IE 讨厌我(我想如何对待别人你想被对待)。

var newDate = new Date("2012, 11, 2 19:30:00:000");
alert(newDate);

这适用于 Chrome 和 FF,但 IE 输出“无效日期”

摆弄我这个:http: //jsfiddle.net/k6yD6/

4

6 回答 6

64

给日期构造函数的字符串应该是 RFC2822 或 ISO 8601 格式的日期。在你的例子中它不是。尝试以下操作:

new Date("2012-11-02T19:30:00.000Z");

或使用替代构造函数

new Date(2012, 11, 2, 19, 30, 0)
于 2012-10-26T17:26:25.907 回答
9

IE 似乎不支持数字字符串中的毫秒和月。尝试这个:

new Date("November 2, 2012 19:30:00");

或者

new Date(year, month, day, hours, minutes, seconds, milliseconds)
于 2012-10-26T17:31:40.373 回答
3

利用

var newDate = moment("2012, 11, 2 19:30:00:000").toDate();
alert(newDate);

这也适用于 IE。

于 2018-12-06T14:25:04.617 回答
3

我在使用 Internet Explorer 时遇到了同样的问题。这就是我最初格式化日期和时间的方式,

function formatDateTime(date, formatString = 'MM/DD/YYYY hh:mm A') {
  return moment(new Date(date)).format(formatString);
}

问题出在new Date(). 我刚刚删除它,因为它已经是一个UTC日期。所以只是,

return moment(date).format(formatString);

这在包括IE在内的所有浏览器中都适用于我。

于 2017-03-16T07:14:57.373 回答
1

要在 中工作IE,日期应采用正确的格式。我使用以下格式解决了同样的问题:

var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day
于 2015-12-30T07:01:08.940 回答
0
var time = new Date("2021-12-01 17:02:12");
if(isNaN(time))
{
    time= new Date(date.replace(/ /g,'T')+'.000Z');
}
于 2021-12-01T08:02:38.290 回答