【问题标题】:Javascript Invalid Date Error in Internet ExplorerInternet Explorer 中的 Javascript 无效日期错误
【发布时间】:2012-10-26 17:22:31
【问题描述】:

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

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

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

请教我这个http://jsfiddle.net/k6yD6/

【问题讨论】:

  • 我实际上在 Firefox 中也得到了无效的日期(最新版本,16.0.1)。
  • 只要确保您使用的是正确支持的格式。这个问题之前已经被问过很多次了,stackoverflow.com/questions/3020508/…
  • 对于 IE 它的 dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
  • 别担心。 IE 讨厌所有人
  • 或者微软可以像其他浏览器一样做得很好! .. 糟糕的浏览器

标签: javascript internet-explorer date


【解决方案1】:

给日期构造函数should be an RFC2822 or ISO 8601 formatted date的字符串。在你的例子中它不是。请尝试以下操作:

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

或使用alternate constructor

new Date(2012, 11, 2, 19, 30, 0)

【讨论】:

  • 谢谢,备用构造函数可以工作,但是您列出的第一个构造函数似乎在任何浏览器中都没有
  • @DougieBear 答案已更新 - 我之前错过了必填的零
  • 新日期("2012-11-02T19:30:00.000Z");毫秒可以省略,但如果包含,必须以点开头,而不是冒号。
  • 我不得不拆分我的日期字符串并添加一个 T & Z !!
【解决方案2】:

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

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

new Date(year, month, day, hours, minutes, seconds, milliseconds)

【讨论】:

  • new Date("November 2, 2012 19:30:00"); - 这为我省去了很多痛苦。
【解决方案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

【讨论】:

  • OP 没有提到使用 moment.js 库。
  • OP以外的其他人查看此页面寻找答案,其中一些人正在使用moment.js
【解决方案4】:

使用

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

这也适用于 IE。

【讨论】:

    【解决方案5】:

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

    var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day
    

    【讨论】:

    • 当我将这种年-月-日格式传递到我的代码中时,它解决了问题......必须给你一个 1。但是,我不需要新的日期,只需将格式更改为字符串,日期就可以通过 IE 11 在服务器端正确显示。
    【解决方案6】:
    var time = new Date("2021-12-01 17:02:12");
    if(isNaN(time))
    {
        time= new Date(date.replace(/ /g,'T')+'.000Z');
    }
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    猜你喜欢
    • 2016-12-09
    • 2013-04-28
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多