【6日でできるJavaScript入門】日付・時刻の操作

 Webサービスやアプリケーションでは、日付や時刻の表示・計算は非常に重要な役割を果たします。JavaScriptには、日付・時刻を簡単に扱える「Dateオブジェクト」が用意されており、現在の日時の取得、任意の日付の生成、経過日数の計算、フォーマット変換など、
多様な操作を行うことができます。
ここでは、日付・時刻の基本操作から、実用的な日付計算の応用例までを解説します。

1.Dateオブジェクトの基本

1.1 Dateオブジェクトの生成

方法解説
new Date()現在日時を生成let now = new Date();
new Date(年,月,日[,時,分,秒])指定日時を生成(※月は0=1月、11=12月)let d = new Date(2025, 6, 1);
new Date(文字列)文字列(ISO8601等)から生成let d = new Date('2025-07-01');

ポイント
new Date(2025, 6, 1) は「2025年7月1日」です。(月は0スタートに注意)

1.2. 日付・時刻の取得とフォーマット

メソッド説明返り値例
getFullYear()年(4桁)2025
getMonth()月(0=1月, 11=12月)0~11
getDate()1~31
getDay()曜日(0=日曜)0~6
getHours()0~23
getMinutes()0~59
getSeconds()0~59

曜日の数値 → 日本語名 変換例:
['日','月','火','水','木','金','土'][d.getDay()]

1.3. サンプルプログラム:現在の日付と時刻を表示

ファイル名: lesson25-1.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>⏰ 現在の日時を表示するサンプル</title>
</head>
<body>
  <h1>⏰ 現在の日時</h1>
  <button id="showNow">日時を表示</button>
  <div id="nowArea"></div>
  <script>
    document.getElementById('showNow').addEventListener('click', function() {
      let now = new Date();
      let y = now.getFullYear();
      let m = now.getMonth() + 1; // 0始まりなので+1
      let d = now.getDate();
      let w = ['日','月','火','水','木','金','土'][now.getDay()];
      let h = now.getHours();
      let min = now.getMinutes().toString().padStart(2, '0');
      let s = now.getSeconds().toString().padStart(2, '0');
      let msg = `${y}年${m}月${d}日(${w}) ${h}時${min}分${s}秒`;
      document.getElementById('nowArea').textContent = msg;
    });
  </script>
</body>
</html>

ブラウザの出力例

出力例
2025年7月5日(土) 15時23分42秒

2.日付・時刻の演算と応用

2.1. 残り日数の計算(例:目標日まであと何日?)

ファイル名: lesson25-2.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>🗓️ 目標日までの残り日数</title>
</head>
<body>
  <h1>🗓️ 目標日まであと何日?</h1>
  <label>目標日を選択:</label>
  <input type="date" id="targetDate">
  <button id="calcBtn">計算</button>
  <div id="result"></div>
  <script>
    document.getElementById('calcBtn').addEventListener('click', function() {
      let today = new Date();
      let targetStr = document.getElementById('targetDate').value;
      if(!targetStr) {
        document.getElementById('result').textContent = "日付を選択してください。";
        return;
      }
      let target = new Date(targetStr);
      let ms = target.getTime() - today.getTime();
      let days = Math.ceil(ms / (1000*60*60*24));
      if(days < 0) {
        document.getElementById('result').textContent = "指定日を過ぎています。";
      } else {
        document.getElementById('result').textContent = `あと ${days} 日です。`;
      }
    });
  </script>
</body>
</html>

ブラウザの出力例

出力例

「2025-07-10」を指定 → あと 5 日です。

2.2. 誕生日まであと何日?(セレクトボックス応用)

ファイル名: lesson25-3.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>🎂 誕生日カウントダウン</title>
</head>
<body>
  <h1>🎂 誕生日カウントダウン</h1>
  <label>誕生日(月・日):</label>
  <select id="month"></select>月
  <select id="date"></select>日
  <button id="countBtn">計算</button>
  <div id="bdayResult"></div>
  <script>
    // セレクトボックス初期化
    for(let i=1;i<=12;i++) document.getElementById('month').innerHTML += `<option value="${i-1}">${i}</option>`;
    for(let i=1;i<=31;i++) document.getElementById('date').innerHTML += `<option value="${i}">${i}</option>`;

    document.getElementById('countBtn').addEventListener('click', function() {
      let today = new Date();
      let mm = Number(document.getElementById('month').value); // 0始まり
      let dd = Number(document.getElementById('date').value);
      let bday = new Date(today.getFullYear(), mm, dd);
      if(bday < today) bday.setFullYear(bday.getFullYear() + 1);
      let days = Math.ceil((bday - today) / (1000*60*60*24));
      document.getElementById('bdayResult').textContent = `次の誕生日まで、あと ${days} 日です。`;
    });
  </script>
</body>
</html>

ブラウザの出力例

出力例

  • 7月6日(今日が7月5日)→ 次の誕生日まで、あと 1 日です。
  • 1月1日(今日が7月5日)→ 次の誕生日まで、あと 180 日です。

2.3. 日付・時刻を指定して変更(set系メソッド)

メソッド使い方例効果
setFullYear(y)d.setFullYear(2027)年を2027年に変更
setMonth(m)d.setMonth(5)月を6月に変更(0始まり)
setDate(day)d.setDate(15)日を15日に変更
setHours(h)d.setHours(10)時を10時に変更

まとめ

  • 日付・時刻はDateオブジェクトを使い、getsetメソッドで自在に操作できます。
  • 日付の計算やカウントダウンなど、実用的な機能もシンプルなコードで実現可能です。
  • 0始まり(月)や、曜日の取り扱いに注意しましょう。