【JavaScript】指定した月の最終日を取得する

今回は JavaScript での日付操作についてです。
とある項目のデフォルト値を、現在の日付から 2か月後の最終日にしたいという要望があり、そのやり方について調査したのでまとめます。

今回参考にさせていただいた記事はこちらから。

JavaScriptで月末日を取得する – Qiita
https://qiita.com/akase244/items/f558b9b3c51804103d16

 

日付の取得には Date オブジェクトを使用します。
まず、下記のサンプルコードにあるように、現在の日付を取得します。

const date = new Date();

あとはこの日付を基準に、2か月後の月末日を取得します。
で、この時のポイントが、日の値に 0 を指定することです!
たとえば、今回取得したいのは「2か月後の最終日」なのですが、こちらは「3か月後の0日目」と同じ意味になるとのこと。
なので、下記のサンプルコードにあるように、今月に +3 をして、日を 0 にすれば、2か月後の月末日が取得できます!

const result = new Date(date.getFullYear(), date.getMonth() + 3, 0);

なお、月を指定するときは、指定したい月の値から -1 するのをお忘れなく!
また、date.getMonth() の値も 1~12 ではなく、0~11 が返ってくるので、ご注意ください。
ちなみに私はここで無事に頭がこんがらがりました。

実際に上記のコードを実行したところ、無事、下記のように 2か月後の最終日を取得することができました!

Mon Nov 30 2020 00:00:00 GMT+0900 (日本標準時)

月初日なら、1 を指定すればいいのですが、月末日をどのように指定していいのか最初はわからず…。
参考サイトのコードを見た時、なるほど!と思いましたね。
今後どこかで使うこともあると思いますので、頭の片隅にでも記憶しておきたいと思います。

 

以上、JavaScript で指定した月の最終日を取得する方法でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG