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

时间:2020-03-06 15:02:21  来源:igfitidea点击:

我有一个问题-

javascriptDate(" mm-dd-yyyy")构造函数不适用于FF。它适用于IE。

  • IE:new Date(" 04-02-2008")=>`" EDT 2008年4月2日00:00:00"
  • FF2:new Date(" 04-02-2008")=>无效日期

因此,让我们尝试另一个构造函数。尝试此构造函数Date(" yyyy"," mm"," dd")

  • IE:new Date(" 2008"," 04"," 02");=>"周五5月2日00:00:00 EDT 2008"
  • FF:new Date(" 2008"," 04"," 02");=>"星期五5月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更好的方法。

解决方案

Date对象的定义是对" month"字段使用值0-11.

我相信使用String的构造函数是系统相关的(更不用说语言环境/时区的相关性),因此最好使用将年/月/日指定为单独参数的构造函数。

顺便说一句,在Firefox中,

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

对我来说效果很好,它将解释斜杠,但不能连字符。我认为这证明了我的观点,即使用字符串构造Date对象是有问题的。改用月/日/年的显式值:

new Date(2008, 3, 2);

大胆的声明。

我们可能会感兴趣:JavaScript Pretty Date。

我们说得对,月份被指示为索引,因此一月是月份数字0,十二月是月份数字11.

-并且没有解决方法,如ECMA脚本定义中明确指出的那样,尽管通常可以使用一些简单的技巧:

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

确实是个好戏,我刚刚发现了很难的方法(通过思考)。
但是我使用了更自然的日期字符串和连字符:-)

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