Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用类似参数调用日期构造函数时,会提供意外的结果_Javascript_Date - Fatal编程技术网

Javascript 当使用类似参数调用日期构造函数时,会提供意外的结果

Javascript 当使用类似参数调用日期构造函数时,会提供意外的结果,javascript,date,Javascript,Date,我遇到了一个关于Date对象初始化的奇怪问题。想知道是否有人能解释为什么 var exp1 = new Date('2014-10-17'); var exp2 = new Date(2014,9,17); var exp3 = new Date('17 Oct 2014'); console.log(exp1); console.log(exp2); console.log(exp3); 结果: Thu Oct 16 2014 18:00:00 GMT-0600 (MDT) // 16th?

我遇到了一个关于
Date
对象初始化的奇怪问题。想知道是否有人能解释为什么

var exp1 = new Date('2014-10-17');
var exp2 = new Date(2014,9,17);
var exp3 = new Date('17 Oct 2014');
console.log(exp1);
console.log(exp2);
console.log(exp3);
结果:

Thu Oct 16 2014 18:00:00 GMT-0600 (MDT) // 16th? Fri Oct 17 2014 00:00:00 GMT-0700 (MST) // Why GMT -7 Fri Oct 17 2014 00:00:00 GMT-0600 (MDT) // The only one that works as expected
Thu Oct 16 2014 19:00:00 GMT-0500 (Central Daylight Time)
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
2014年10月16日星期四18:00:00 GMT-0600(MDT)//16? 2014年10月17日星期五00:00:00 GMT-0700(MST)//为什么GMT-7 2014年10月17日星期五00:00:00 GMT-0600(MDT)//唯一按预期工作的
为什么这三个
Date
对象如此不同?

第一个日期被视为GMT,因为没有提供时区偏移。注销时,它会显示本地时区中的时间。添加一个偏移量(
exp4
如下),我得到了预期的日期

var exp1 = new Date('2014-10-17');
var exp2 = new Date(2014,9,17);
var exp3 = new Date('17 Oct 2014');
var exp4 = new Date('2014-10-17z-0500');
结果:

Thu Oct 16 2014 18:00:00 GMT-0600 (MDT) // 16th? Fri Oct 17 2014 00:00:00 GMT-0700 (MST) // Why GMT -7 Fri Oct 17 2014 00:00:00 GMT-0600 (MDT) // The only one that works as expected
Thu Oct 16 2014 19:00:00 GMT-0500 (Central Daylight Time)
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
Fri Oct 17 2014 00:00:00 GMT-0500 (Central Daylight Time) 
我不确定您是否需要
exp2
,但我怀疑这与夏令时有关,您居住的地区不遵守夏令时(亚利桑那州?)

编辑:这似乎是特定于浏览器的。上述结果是在Chrome中生成的,而在IE 11中,
exp4
是无效日期。对于IE 11,我必须使用以下格式:

var exp4 = new Date('2014-10-17T00:00-05:00');

第二次电话你真的写了9分了吗?或者输入错误应该是10?@badaboom您使用哪种浏览器?@mdewitt Month value以0开头:“整数值表示月份,1月从0开始,12月从11开始”@杰戈多西啊,明白了!谢谢大家!@GergoErdosi Safari-版本6.1.6(7537.78.2)-Mac OS X 10.7.5感谢您的回答。时区偏移量。。也许你是对的。我没想过。但不管怎样,exp1和exp3让我很困惑。为什么在第一种情况下它指向GMT,但在第二种情况下它运行良好?非常出乎意料的功能。@badaboom是的,exp1和exp3之间的差异出乎意料。我还没有在文档中看到任何解释,因此我认为这取决于浏览器中的实现,并且它们在解析时以不同的方式处理这两个字符串。好的,谢谢。但我认为这与浏览器实现无关,可能是JS中的一些东西。。在所有最新的浏览器@adrift中进行测试如果你将来会发现任何东西,请在这里键入一些单词