JavaScript new Date,IE浏览器下出错 NaN

当涉及到编程,与日期的工作可能是棘手的。然而,幸运的是,大多数语言都已经完成了这个困难的工作,并有一种内置的日期功能来帮助我们。JavaScript是具有有用的功能来帮助大量输出,设置日期。

The JavaScript Date Object

开始日期在JavaScript中你需要做的第一件事是初始化一个对象等工作:

var d = new Date();  

这很好,如果我们想得到目前的日期和时间,但是它没有帮助我们很多,如果我们正在计划在过去或将来的日期工作。在这个例子中,我们需要将日期作为参数传递给上面的代码。

The Problem

我想今天讨论的问题是针对IE和Safari,是关于如何通过日期如下所示不象预期的那样工作:

var d = new Date("2011-02-07");  
alert(d);  
Or:
var d = new Date("2011-02-07T11:05:00");  
alert(d);  

如果你运行上面的代码片段在不同的浏览器,你会发现在你的IE和Safari南返回你非法日期。然而,浏览器,铬和歌剧将输出正确的日期。

The Solution

问题在于,你通过规定的日期为()对象的格式。因为一些原因,别问我为什么,上述两个浏览器是不支持的日期格式“yyyy-mm-dd”因此失败。我还没有设法编译一个明确的支持日期格式的列表,但是我可以告诉你以下的格式是绝对支持的所有浏览器,并建议坚持一个这些,以避免错误:

  1. var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
  2. var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
  3. var d = new Date("02/07/2011"); // "mm/dd/yyyy"
  4. var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
  5. var d = new Date(1297076700000); // milliseconds
  6. var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy