[ JavaScript] 一ヶ月後(nヵ月後)を取得する関数

タイトルのものが欲しくて探したら以下のページにズバリの回答が複数あったのですが、出来れば「2017/2/1」だと「2017/2/28」のように月末を取得して、「2017/2/13」だと「2017/3/12」のように3/13ではなく前日を取れるようにしたかったので変更を少し加えてみました。

参考サイト: Javascript function to add X months to a date

[javascript]
Date.prototype.addMonth = function( m ) {
var d = new Date( this );
var dates = d.getDate();
var years = Math.floor( m / 12 );
var months = m – ( years * 12 );
if( years ) d.setFullYear( d.getFullYear() + years );
if( months ) d.setMonth( d.getMonth() + months );
if( dates == 1 ) {
d.setDate( 0 );
} else {
d.setDate( d.getDate() – 1 );
}
return d;
}
[/javascript]

使い方はこんな感じです。

[javascript]
var d = new Date( ‘2017-04-20’ );
var m = d.addMonth( 1 );
console.log( m );
// Fri May 19 2017 09:00:00 GMT+0900

var d = new Date( ‘2017-04-01’ );
var m = d.addMonth( 1 );
console.log( m );
// Sun Apr 30 2017 09:00:00 GMT+0900
[/javascript]