我在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
为什么这三个Date
对象如此不同?
答案 0 :(得分:2)
第一个日期被视为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 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');