JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで2つの日付の差(日数)を計算する方法をわかりやすく解説

JavaScriptで2つの日付の間に何日あるかを求めたい場合、getTime()メソッドを使うのが基本的なアプローチです。getTime()は、1970年1月1日0時0分0秒(UTC)からの経過時間をミリ秒で返すため、2つの日付のミリ秒同士の差分を計算し、それを日数に変換することで目的の値が得られます。

基本的な考え方

日付の差を求める手順は以下の通りです。

1. 比較したい2つの日付それぞれから getTime() でミリ秒値を取得する
2. 2つのミリ秒値の差を Math.abs() で絶対値として求める
3. 差分を「1日のミリ秒数(1000 × 3600 × 24)」で割って日数に変換する
4. Math.ceil() などで整数に丸める

サンプルコード

実際に動作確認できるシンプルなサンプルがこちらです。2017年10月29日と10月18日の日数差を計算して表示します。

<!DOCTYPE html>
<html>
   <body>
      <script>
         var dateFirst = new Date("10/29/2017");
         var dateSecond = new Date("10/18/2017");

         // ミリ秒での時間差を計算
         var timeDiff = Math.abs(dateSecond.getTime() - dateFirst.getTime());

         // 日数に変換
         var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));

         // 結果を表示
         alert(diffDays); // 11 と表示される
      </script>
   </body>
</html>

コードの解説

  • Math.abs():どちらの日付が後でも、常に正の値(絶対値)として差を取得できます。
  • 1000 * 3600 * 24:1秒=1000ミリ秒、1時間=3600秒、1日=24時間を掛け合わせた「1日あたりのミリ秒数」です。
  • Math.ceil():小数点以下を切り上げます。時間帯のずれによる誤差が生じても、確実に日数として扱えます。

注意点

文字列で日付を生成する場合、ブラウザや環境によって解釈が異なることがあります。特に「MM/DD/YYYY」形式は実装依存のため、実務では「YYYY-MM-DD」形式を使うか、new Date(年, 月, 日)のように数値で指定する方が安全です(月は0始まりなので注意してください)。また、夏時間(DST)の影響で23時間や25時間の日が存在する地域では、切り上げ処理を入れておくことで誤差を防げます。

  1. Androidで2つの日付の差分(日数)を取得する方法【サンプルコード付き】

    はじめに この記事では、Androidアプリで2つの日付の差分(日数)を取得する方法を、実際に動作するサンプルコードとともに解説します。日付の差分計算は、利用期間の表示やイベントまでの残り日数のカウントなど、さまざまな場面で役立つ基本的な処理です。 実装の手順 ステップ1:Android Studioで新規プロジェクトを作成 Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 ステップ2:レイアウトファイル(activity_main.xml)の編集 res/layout/ac

  2. C#で2つの日付の差を取得する方法(DateTime.Subtractの使い方)

    C#では、DateTime.Subtractメソッドを使うことで、2つの日付の差を簡単に取得できます。このメソッドはTimeSpan型の値を返すため、日数や時間、分などの差分を柔軟に扱うことが可能です。1. 2つの日付を設定するまず、比較対象となる2つの日付を設定します。DateTime date1 = new DateTime(2018, 8, 27); DateTime date2 = new DateTime(2018, 8, 28);2. Subtractメソッドで差分を取得する次に、Subtractメソッドを呼び出して日付の差を求めます。date2からdate1を引く形で記述します。