Rom*_*ain 3 javascript google-chrome date
我正在使用javascript Date对象将字段值转换为时间戳,同一段代码可以工作几年,但今天我有一个奇怪的行为,标题中有日期.
它可以通过以下代码汇总:
// 06 June 2013
DateTemp = new Date();
DateTemp.setFullYear( 2013 );
DateTemp.setMonth( 5 );
DateTemp.setDate( 6 );
DateTemp.setHours( 0 );
DateTemp.setMinutes( 0 );
DateTemp.setSeconds( 0 );
console.log( DateTemp.getMonth() ); // 5
DateTemp.setMonth( 6 );
console.log( DateTemp.getMonth() ); // 6
DateTemp.setMonth( 7 );
console.log( DateTemp.getMonth() ); // 7
Run Code Online (Sandbox Code Playgroud)
我希望它能回归:5 6 7
但它输出:6 6 7
因此,如果用户在字段中输入此日期,它会在一个月后存储日期...如果有人可以解释我在哪里搞砸了,请提前感谢您.
祝你今天愉快,
交换线条,您可以使用设置月份的日期设置日期:
DateTemp = new Date();
DateTemp.setFullYear( 2013 );
DateTemp.setDate( 6 );
DateTemp.setMonth( 5 );
DateTemp.setHours( 0 );
DateTemp.setMinutes( 0 );
DateTemp.setSeconds( 0 );
console.log( DateTemp.getMonth() ); // 5
DateTemp.setMonth( 6 );
console.log( DateTemp.getMonth() ); // 6
DateTemp.setMonth( 7 );
console.log( DateTemp.getMonth() ); // 7
Run Code Online (Sandbox Code Playgroud)
怎么了?
如果使用构造new Date()函数,则会创建具有当前日期的新Date对象.所以今天这将是这样的:
Date {Fri May 31 2013 14:20:32 GMT+0200}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您首先会将月份更改为6月份.但是没有6月31日,这是由JavaScript以这种方式处理的,它被转换为
Date {Mon Jul 01 2013 14:21:28 GMT+0200}
Run Code Online (Sandbox Code Playgroud)
然后你设置一天和所有其他部分,这只是工作正常.但最终看来你还有一个月的时间.
所以最后解决方案只是以这种方式更改设置值的顺序,不会发生这种"溢出"或直接使用带有相应参数的构造函数:
new Date( 2013, 5, 6 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |