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);