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

2020年5月10日

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

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

本日の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月という値を渡すと、年も翌年に変換してくれるという、便利ポイントがあるので、非常にありがたい限りです。

このブログを検索

プロフィール

自分の写真
プログラミングとサーバーを心の底から楽しむクリエーターです。 経営者であり、開発者でもありますが、得意としているのは、アイデア創出で、出来高は無限大です。

ブログ アーカイブ

QooQ