【问题标题】:Javascript new Date object from String, Different results on IE and FF来自字符串的 Javascript 新日期对象,IE 和 FF 上的不同结果
【发布时间】:2012-03-29 01:45:55
【问题描述】:

我正在尝试从字符串创建一个新的日期对象,如下所示:

var myDate= new Date("1985-01-01T00:00:00.000-06:00");

在 FireFox 上,它会发出以下警报

1985 年 1 月 1 日星期二 00:00:00 GMT-0600(中部标准时间)

在 IE8 上,它会警告以下内容

NaN

为什么 IE 会这样?

【问题讨论】:

标签: javascript datetime


【解决方案1】:

查看documetation正确的格式如下:

  new Date(year, month, day [, hour, minute, second, millisecond ]) 

因此,如果您运行以下代码,则在所有浏览器中都可以:

 var myDate= new Date(1985, 01, 01 , 00, 06, 00, 0000000000);
 myDate // you get the right date in all browsers IE8/7 included

【讨论】:

  • 这不会得到正确的日期,因为 ie8 从 '0' 而不是 '1' 开始计算月份,所以 'new Date(1985, 01, 01, 00, 06, 00, 0000000000)' 得到 2 月不是君,过月参数需要减1
【解决方案2】:

尝试moment.js 解决所有 JS 日期问题。

【讨论】:

  • 您能否提供一个代码示例,说明如何使用 moment.js 来回答问题?
  • @JustinStolle var myDate = moment('1985-01-01T00:00:00.000-06:00');
【解决方案3】:

IE 不支持该格式。也许你可以尝试使用setUTCHours:

var rawdate = new Date("1985/01/01 00:00:00 GMT");
console.log(rawdate);
  //=> in my timezone: Tue Jan 1 01:00:00 UTC+0100 1985
console.log(rawdate.setUTCHours(-6));
  //=> in my timezone that results in: Mon Dec 31 19:00:00 UTC+0100 1984

或者你的意思是(在 IE 中工作,而不是在其他浏览器中)?

var rawdate = new Date("1985/01/01 00:00:00 GMT-6");
  //=> Tue Jan 1 07:00:00 UTC+0100 1985

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多