在前端代碼中不免會涉及到時間的操做,如何構造一個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對象的其餘方法