【JavaScript入門】日付の加算・減算方法まとめ(月またぎ/うるう年)

こんにちは!Webコーダー・プログラマーの貝原(@touhicomu)です。

今回はJavaScriptにおける日付の加算(減算)方法について解説していきます。JavaScriptの日付の計算は扱いが独特で、初学者の方はその方法に悩まれることが多いですよね。そこで本記事では

  • 基本的な加算・減算方法

という基礎的な内容から

  • 月またぎの日数・月数の計算方法
  • うるう年を計算する方法

など実際の開発の場で応用できる内容までを解説していきます。JavaScriptの日付の加算(減算)方法について正しく理解し、必要な場面で使いこなすことができるように、しっかり学習していきましょう。

基本的な加算・減算方法

まずは、基本的な加減算の方法を見ていくことにしましょう。一般的な日付の構成は”年、月、日、時、分、秒”であり、それぞれの値を取得/設定するメソッドがJavaScriptには用意されています。

以下の表にまとめましたので確認してみましょう。

種類 取得メソッド 設定メソッド 注意点
getFullYear setFullYear
getMonth setMonth 0~11の値
getDate setDate
getHours setHours
getMinutes setMinutes
getSeconds setSeconds

注意点として、getMonth()setMonth()は0の値から始まるということです。つまり通常のカレンダーの1月が0の値となりますので、通常のカレンダーと上記メソッドの取る値では1つずつ値がずれていることを覚えておいてください。

そして、”年、月、日、時、分、秒”を加算、減算する為の基本的な処理の構文は以下の通りです。

上記のように、getXXX()で現在のDateクラスの変数dtの日付を取得し、その日付に値(DDD)を加減算し、setXXX()で現在のdtの日付情報を取得するのが基本の流れです。

では、具体的なサンプルを見てみましょう。まずは、日付の加算の例です。

実行結果:

次に減算の例です。

実行結果:

ぜひ、実際に自分の環境にてサンプルの数値を変えてみるなどして、処理の流れを確認して見てくださいね。

なお、細かい話ですがGMT+0900 (東京 (標準時))の部分は実行環境により表示が異なります。Internet Explorer・Microsoft Edgeの場合、(東京 (標準時))。Google Chromeの場合、 (日本標準時)。Safariでは(JST)となります。

どれも日本標準時(JST)を表しており、本質的な違いはありません。ブラウザごとの仕様の違いということで、気にせず学習を進めていってください。

以下の実行結果も同様です。

月またぎの日数・月数の計算方法

では、ここから実践的な内容を解説していきます。

日数の加算・減算

日数の加算・減算については、月またぎの計算になってもうまく計算できます。月初から月をまたいで、1日前の日付を計算してみましょう。

実行結果:

4月1日の「-1」日目として、3月31日が設定され、表示されていますね。

次に、月末の1日後を計算してみましょう。

実行結果:

3月31日の「+1」日目として、4月1日が設定され、表示されていますね。

月数の加算・減算

月をまたいた月の加算・減算では、以下の法則で日数が加算・減算されます。

  • date.getMonth()に「+1」すると変数dateの月を+1し、日はdateの日になります。dateの日が月末日を超えている場合は、翌月に調整されます。「+2」の場合も、変数dateの月に+2します。日の調整は同様です。
  • date.getMonth()に「-1」すると変数dateの月を-1し、日はdateの日になります。dateの日が月末日を超えていた場合は、翌月に調整されます。「-2」の場合も、変数dateの月に-2します。日の調整は同様です。


まずは、月を1ヶ月足す場合と2ヶ月分足す場合をみていきましょう。

実行結果:

3月31日の1ヶ月後は3月が「+1」され4月に、日は4月が30日までであるため31日が翌月に繰り越され、結果は5月1日になっていますね。

3月31日の2ヶ月後は3月が「+2」され5月に、日は5月が31日まであるため31日が採用され、結果は5月31日になっていますね。

次に月から1ヶ月分引く場合と、月に2ヶ月分引く場合をみていきましょう。

実行結果:

3月30日の1ヶ月前は3月が「-1」され2月に、日は2月は29日までしかないため、30日が翌月に繰り越され、結果は3月1日になっていますね。

3月30日の2ヶ月後は3月が「-2」され1月、日は1月は31日まであるため、30日が採用され、結果は1月30日になっていますね。

月初日、月末日の算出

月初日、月末日の取得については、以下ページにて解説していますので、ご参照ください。

【JavaScript入門】日付の取得と比較の方法まとめ
更新日 : 2019年7月22日

うるう年を計算する方法

うるう年を計算するには、下記条件を満たすかどうかチェックします。

  • 西暦年が4で割り切れる年かつ西暦年が100で割り切れない年
  • もしくは西暦年が400で割り切れる年

がうるう年であると判定できます。そのため、コードでは以下のように計算します。

実行結果:

以上のように、2020年はうるう年ですね。このように関数化すると便利です。

日付の使い方総まとめ

日付の様々な使い方についてはこちらの記事で詳しく解説しているので、ぜひ確認してください。

日付処理を使い倒す! JavaScriptのDate活用法を徹底解説
更新日 : 2019年5月14日

まとめ

いかがでしたか。

JavaScriptでは、日付をDate#newで作成した後、簡単に年、月、日、時、分、秒を個別に取得、設定ができ、個別に加算、減算することが可能でした。

ただし、月をまたいだ日数や月数を加算、減算する際は、日が月初日や月末日を超えている場合、日が前月や翌月に繰り越されて計算されてしまうという注意ポイントがありました。また、うるう年を計算する方法も見てきました。

うるう年は関数化してしまえば、簡単にうるう年かどうかをチェックできました。便利ですので、ぜひ、応用されてください。

JavaScriptの日付の加算、減算について忘れてしまったら、またこのページを読み返してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

貝原 輝昌

貝原 輝昌

こんにちは!貝原(@touhicomu)と申します。
現在は、Web業界のフリーランスとして、主にPHP/WordPress/BuddyPress/VPSサーバー構築などの業務を受注しています。
現住所は、日本の西海岸、長崎県は波佐見町です。田舎ライフです。^^
地元の観光団体「笑楽井石」にボランティアでほたる撮影会やそば塾などのスタッフとして参加させて頂いています。
以下の活動も行っています。
 ・笑楽井石のブログ
 ・エクセル関数を日本語化するソフト
 ・エクセルVBAを日本語で記述するソフト

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説