[Javascript] ○ヶ月後の日付を取得する方法

2020年5月10日

Javascript テクノロジー プログラミング

カレンダーを制するものは、時を司る・・・、ワケないよね〜。下駄です。

本日のIT謎掛け

「date関数」とかけまして・・・ 「スポーツの競技中に怪我をした場合」と、ときます。 そのココロは・・・ タイムをとります。

ネットで見かける日付操作の落とし穴

カレンダー機能を作っていた時に、次の月や前の月に、移動するボタンを設置する必要がでてきました。 そして、出来上がった関数は以下のようなプログラムです。 function month_move(y , m , move_month){ var d = new Date(Number(y) , Number(m) -1 , 1); d.setMonth(d.getMonth() + move_month); return{ y : d.getFullYear(), m : d.getMonth() +1 }; }; 年と月と、移動する月数を"month_move()"という関数に送ると、結果の年と月が返ってくるという関数です。 month_move(2020,1,+1) > {y: 2020, m: 2} month_move(2020,2,+1) > {y: 2020, m: 3} month_move(2020,3,+1) > {y: 2020, m: 4} month_move(2020,12,+1) > {y: 2021, m: 1} month_move(2021,1,+1) > {y: 2021, m: 2} month_move(2021,2,+5) > {y: 2021, m: 7} month_move(2021,1,-1) > {y: 2020, m: 12} 正常に取得できますね。 +1dで翌月、-1で前月を取得でき、年またぎもうまくいっています。 もちろん、+1,-1以外にも、数ヶ月先にも対応できています。

ちょっとだけプログラム解説

javascriptには、phpの"strtotime"というような便利な関数は用意されていないので、今回のプログラムでは、"new Date()"関数で、日付オブジェクトを作って、その中で、数カ月後の月にセットをして、その日付オブジェクトから、年と月を取得しています。 さほど難しい要素はないのですが、2行目の、 var d = new Date(Number(y) , Number(m) -1 , 1); ここで、日付オブジェクトを作成して、います。 ポイントは基準になる年月をセットする点ですね。 この値を入れないと、基準日が今現在になってしまいます。 そして、日は、月初の1日に固定しています。 次に、3行目の箇所が、月移動の処理です。 d.setMonth(d.getMonth() + move_month); 年またぎ処理は、内部で13月という値を渡すと、年も翌年に変換してくれるという、便利ポイントがあるので、非常にありがたい限りです。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。