ISプランニングはデジタルとアナログの融合を目指します

[ 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

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;
}

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

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
タグ
, , ,
トラックバックURL

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

ページTOPに戻る