javascript setMonth 的 bug

今天同事跟我說他遇到了一個 javascript date 的 bug,

假設今天是 2016-10-31

var date = new Date();
date.setMonth(8)
console.log(date); //Sat Oct 01 2016 14:50:35 GMT+0800 (CST)

我設定月份是九月,可是印出來卻是十月,後來調查過後原來是一個 date 的 bug,因為9月並沒有31號,所以就自動進位了一天。

正確的避免掉這個 bug 的方法就是,先將日期設定至一號,在修改月份。

var date = new Date();
date.setDate(1) // 10/1
date.setMonth(8)
console.log(date) // 9/1
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.