javascript Date對象setMonth方法的bug

來源:互聯網
上載者:User

其實耶談不上什麼BUG,只是JS Date對象對溢出時間進行了自己的處理。

首先把你的系統時間設為2013年1月31號,這一步很重要,不然可能不會發生這個BUG,然後執行下面的代碼

 

 代碼如下 複製代碼
var t = new Date();
t.getMonth(); //輸出0,現在擷取的是正確的值,因為getMonth是從0開始索引的
t.setMonth(3); //設定月份為4月
t.getMonth(); //輸出4,這裡本應該輸出3的var t = new Date();
t.getMonth(); //輸出0,現在擷取的是正確的值,因為getMonth是從0開始索引的
t.setMonth(3); //設定月份為4月
t.getMonth(); //輸出4,

這裡本應該輸出3的你會發現,你明明設定了Month值為3,但getMonth時候卻輸出4。此時,你可能會比較疑惑。我們再來看看現在的時間

 

 代碼如下 複製代碼
console.log(t); //Wed May 01 2013 11:47:31 GMT+0800 (CST)console.log(t); //Wed May 01 2013 11:47:31 GMT+0800 (CST)setMonth(3)

指定設定日期到4月份,但4月份只有30天,此時的時間是2013-04-31,但4月並沒有31天。所以js對溢出日期進行了處理,自動將月份設到5月1號

針對這個問題也很好解決,只要在setMonth之前把日期設定到每月都有的日期,1-28都可以。

 代碼如下 複製代碼


var t = new Date();
t.setDate(1);
t.setMonth(3);
t.getMonth();//輸出3

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.