JavaScript

Date.prototype.setMonth() メソッド

 編集:2022.12.05 by T.A.

[Edge]。→

Date に日時の「月」(オプションで「日」も)を地方時に基づき設定します。戻り値として、更新後の日時の、協定世界時(UTC)での 1970 年 1 月 1 日 0 時 0 分 0 秒からのミリ秒単位の数値が返されます。

構文
Date.setMonth(monthValue[, dayValue])

JavaScript 1.3 より前のバージョン:

Date.setMonth(monthValue)
Date Date
monthValue 「月」を表す整数の数値(0~11)。範囲外の値は、その超えた分だけ設定日時が増減します。
dayValue 省略可。「日」を表す整数の数値(1~31)。¶範囲外の値は、その超えた分だけ設定日時が増減します。
返値

更新後の日時の、協定世界時(UTC)での 1970 年 1 月 1 日 0 時 0 分 0 秒からのミリ秒単位の数値。

解説/mdn

dayValue 引数を指定しなかった場合、getDate() メソッドから返される値が使われます。

指定した値が期待される日付の範囲外の場合、それに応じて setMonth() が Date オブジェクトの日付情報の更新を試みます。例えば、monthValue に 15 を指定した場合、年に 1 が加算され、月が 3 になります。

このメソッドの動作は、ある特定の月の日にちに影響を与えます。概念上は、その月の日数を、引数として与えた新しい月の初日に加え、新しい日付を返します。例えば、現在の値が 2016 年 8 月 31 日である場合、1 を引数として setMonth() を呼び出すと 2016 年 3 月 2 日が返ってきます。これは、2016 年の 2 月が 29 日間しかないからです。

/mdn
var theBigDay = new Date();
D=theBigDay.setMonth(6); //=1657110829384。theBigDay=[object]:Wed Jul 06 2022 21:34:18 GMT+0900 (日本標準時)
//月末の異動に注意
var endOfMonth = new Date(2016, 7, 31);
D=endOfMonth.setMonth(1); //=1456844400000。endOfMonth=Wed Mar 02 2016 00:00:00
//→endOfMonth=[object]:Wed Mar 02 2016 00:00:00 GMT+0900 (日本標準時)
Dat=new Date("2020-3-5");  //日時指定で Date オブジェクトを作成。
D=Dat.toLocaleString();    //見やすく表示。
	//=[string]:2020/3/5 0:00:00
N=Dat.setMonth(1);        //「月」を設定。
	//=[number]:1580828400000
DA=Dat.toLocaleString();  //更新後の日時を見やすく表示。
	//=[string]:2020/2/5 0:00:00
N=Dat.setMonth(-1);       //「月」を設定(範囲外)。
DA=Dat.toLocaleString();  //更新後の日時を見やすく表示。
	//=[string]:2019/12/5 0:00:00
N=Dat.setMonth(10, -1);   //「月」、「日」(範囲外)を設定。
DA=Dat.toLocaleString();  //更新後の日時を見やすく表示。
	//=[string]:2019/10/30 0:00:00

テスト