Javascript Date()构造函数没有';行不通
我有个问题- javascriptJavascript Date()构造函数没有';行不通,javascript,Javascript,我有个问题- javascript日期(“mm dd yyyy”)构造函数不适用于FF。它对IE很管用 IE:新日期(“04-02-2008”)=>“Wed Apr 2 00:00:00 EDT 2008” FF2:新日期(“04-02-2008”)=>无效日期 因此,让我们尝试另一个构造函数。尝试此构造函数日期(“yyyy”、“mm”、“dd”) IE:新日期(“2008”、“04”、“02”)=>“2008年5月2日星期五00:00:00美国东部夏令时” FF:新日期(“2008”、“
日期(“mm dd yyyy”)
构造函数不适用于FF。它对IE很管用
- IE:
=>新日期(“04-02-2008”)
“Wed Apr 2 00:00:00 EDT 2008”
- FF2:
=>新日期(“04-02-2008”)
无效日期
日期(“yyyy”、“mm”、“dd”)
- IE:
新日期(“2008”、“04”、“02”)代码>=>“2008年5月2日星期五00:00:00美国东部夏令时”
- FF:
新日期(“2008”、“04”、“02”)代码>=>“2008年5月2日星期五00:00:00美国东部夏令时”
- IE:
新日期(“2008”、“03”、“02”)代码>=>“美国东部夏令时2008年4月2日星期三00:00:00”
- FF:
新日期(“2008”、“03”、“02”)代码>=>“美国东部夏令时2008年4月2日星期三00:00:00”
日期(“yyyy”、“mm”、“dd”)
构造函数使用0
索引来表示一月
有人处理过这个问题吗?一定有比从月份中减去1更好的方法。最好在
月份
字段中使用值0-11
我认为使用字符串的构造函数依赖于系统(更不用说依赖于区域设置/时区),因此最好使用构造函数,将年/月/日指定为单独的参数
顺便说一句,在Firefox中
new Date("04/02/2008");
对我来说很好-它可以解释斜杠,但不能解释连字符。我认为这证明了我的观点,即使用字符串构造日期对象是有问题的。改为使用月/日/年的显式值:
new Date(2008, 3, 2);
大胆的声明
这可能会引起你的兴趣:。你说得很对,月份是以指数表示的,所以一月是第0个月,十二月是第11个月 --ECMA脚本定义中明确指出,虽然简单的技巧通常会奏效,但没有解决办法:
var myDate = "2008,03,02".split(",");
var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]);
alert(theDate);
这确实是一个很好的把戏,我刚刚发现了困难的方法(通过思考)。 但我使用了一个更自然的日期字符串和连字符:-) 使用 可以,但当月和日值错误时,它会显示一些奇怪的行为 尝试在
myDate[1]-1
和myDate[2]
的值都为55的情况下强制转换日期。Javascript仍然返回日期,尽管输入显然不正确
在这种情况下,我宁愿javascript返回错误。@Frank:你说得对。当您需要验证日期时
var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]);
这是行不通的
发生的事情是,它不断地添加额外的参数。例如:
new Date("2012", "11", "57") // Date {Sat Jan 26 2013 00:00:00 GMT+0530 (IST)}
Date对象接受额外的天数(57-31=26)并将其添加到我们创建的日期
或者,如果我们尝试使用以下内容构造日期对象:
new Date("2012", "11", "57", "57") //Date {Mon Jan 28 2013 09:00:00 GMT+0530 (IST)}
额外增加2天9小时(57=24+24+9)
new Date("2012", "11", "57") // Date {Sat Jan 26 2013 00:00:00 GMT+0530 (IST)}
new Date("2012", "11", "57", "57") //Date {Mon Jan 28 2013 09:00:00 GMT+0530 (IST)}