Javascript Date()构造函数不起作用

我有一个问题 –

javascript Date("mm-dd-yyyy")构造函数不适用于FF。 它工作正常的IE浏览器。

  • IE: new Date("04-02-2008") => "Wed Apr 2 00:00:00 EDT 2008"
  • FF2: new Date("04-02-2008") => Invalid Date

所以让我们尝试另一个构造函数 尝试这个构造函数Date("yyyy", "mm", "dd")

  • IE: new Date("2008", "04", "02"); => "Fri May 2 00:00:00 EDT 2008"
  • FF: new Date("2008", "04", "02"); => "Fri May 2 00:00:00 EDT 2008"
  • IE: new Date("2008", "03", "02"); >> "Wed Apr 2 00:00:00 EDT 2008"
  • FF: new Date("2008", "03", "02"); >> "Wed Apr 2 00:00:00 EDT 2008"

所以Date("yyyy", "mm", "dd")构造函数使用索引0来表示1月份。

有没有人处理过这个?
从月份中减去1的方法肯定有更好的办法。

Date对象的定义使用month字段的值0-11。

我相信,使用string的构造函数是依赖于系统的(更不用说区域设置/时区相关),所以你可能最好使用指定年/月/日作为单独参数的构造函数。

顺便说一句,在Firefox中,

 new Date("04/02/2008"); 

对我来说工作正常 – 它会解释斜线,但不是连字符。 我认为这certificate了我的观点,使用String来构造一个Date对象是有困难的。 使用明确的值来代替月/日/年:

 new Date(2008, 3, 2); 

确实很好的伎俩,我刚刚发现了困难的方式(通过思考)。 但是我用连字符使用更自然的datestring:-)

 var myDateArray = "2008-03-02".split("-"); var theDate = new Date(myDateArray[0],myDateArray[1]-1,myDateArray[2]); alert(theDate); 

运用

 var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]); 

没问题,但是当月份和date值错误时,它会显示一些奇怪的行为。

尝试投射一个date,其中myDate[1]-1myDate[2]值为55. Javascript仍然会返回一个date,尽pipeinput显然是不正确的。

我会喜欢JavaScript在这种情况下返回一个错误。

@弗兰克:你说得对。 当你需要validationdate时,

 var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]); 

不pipe用。

会发生什么是它不断添加额外的参数。 例如:

 new Date("2012", "11", "57") // Date {Sat Jan 26 2013 00:00:00 GMT+0530 (IST)} 

date对象需要额外的天数(57-31 = 26)并将其添加到我们创build的date。

或者,如果我们尝试构build一个date对象:

 new Date("2012", "11", "57", "57") //Date {Mon Jan 28 2013 09:00:00 GMT+0530 (IST)} 

额外增加2天9小时(57 = 24 + 24 + 9)。

你说的很对,月份是指数,所以一月份是月份0,十二月份是月份11 …

– ECMA脚本定义中明确指出,虽然简单的技巧通常会起作用,但没有解决方法:

 var myDate = "2008,03,02".split(","); var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]); alert(theDate); 

大胆的声明。

这可能有你的兴趣: JavaScript漂亮date 。