在前端代码中不免会涉及到时间的操做,如何构造一个Date对象呢?javascript为咱们提供以下几种方式:javascript
new Date("month dd,yyyy hh:mm:ss"); new Date("month dd,yyyy"); new Date(yyyy,mth,dd,hh,mm,ss); new Date(yyyy,mth,dd); new Date(ms);
其中:前端
构造函数中部分参数为负数的状况:java
>new Date(1990,11,-1) >Thu Nov 29 1990 00:00:00 GMT+0800 (中国标准时间) >new Date(1990,10,-1) >Tue Oct 30 1990 00:00:00 GMT+0800 (中国标准时间) >new Date(1990,10,-2) >Mon Oct 29 1990 00:00:00 GMT+0800 (中国标准时间) >new Date(1990,-1,-2) >Tue Nov 28 1989 00:00:00 GMT+0800 (中国标准时间) >new Date(1990,-1,0) >Thu Nov 30 1989 00:00:00 GMT+0800 (中国标准时间)
上面的结果,你可能会有疑惑,不急,且跟我一块儿往下看:浏览器
在月份小于0时,构造函数会在月份为0的基础上,向上X月,如:函数
new Date(2015,-1,1) Mon Dec 01 2014 00:00:00 GMT+0800 (中国标准时间)code
在日小于1时,构造函数会在天数为1的基础上,向上X天,如:对象
new Date(2015,0,0) Wed Dec 31 2014 00:00:00 GMT+0800 (中国标准时间)ip
若是二者都为负数,能够先计算月,再计算日,得出正确结果,如:开发
new Date(2015,-1,0) Sun Nov 30 2014 00:00:00 GMT+0800 (中国标准时间)get
若是月大于11,日大于当月天数,自动向后推移,如(2015年2月份只有28天):
new Date(2015,1,29) Sun Mar 01 2015 00:00:00 GMT+0800 (中国标准时间)
也就是说在开发过程当中,咱们彻底能够使用new Date(yyyy,mm,dd)构造函数提供的这一特性,完成上一日,下一日,上一月,下一月这样的日期操做。
上一日:
new Date(yyyy,mm,dd-1)
下一日:
new Date(yyyy,mm,dd+1)
上一月:
new Date(yyyy,mm-1,dd)
下一月:
new Date(yyyy,mm+1,dd)
在IE九、Chrome及Firefox浏览器实测经过。 Date对象的其余方法