JavaScript: JavaScript 日付処理

最終更新:2026-10-13

JavaScript は Date オブジェクトを使って日付と時刻を扱います。デジタル時計のようなものだと考えてください。現在時刻を表示し、任意の時刻を設定でき、2つの時刻の差を計算できます。

関連する日付メソッド:getFullYear() toISOString() getMonth() getHours() Date.now() getDate() getDay() Date set

1. Dateオブジェクトの作成と操作

Date を作成する4つの一般的な方法:

HTML
<script>
console.log(new Date());                      // 現在の日付と時刻
console.log(new Date("2025-06-19"));          // 日付文字列
console.log(new Date(2025, 5, 19, 10, 30, 0)); // 年、月、日、時、分、秒
console.log(new Date(1718764800000));         // タイムスタンプ(ミリ秒)
</script>

大きな落とし穴:月はゼロ始まりです! 0 = 1月、11 = 12月です。new Date(2025, 5, 19) の 5 は6月を意味し、5月ではありません。これは Date オブジェクトで最も批判されている設計決定と言えるでしょう。

(2) 日付と時刻の取得

メソッド 返り値 備考
getFullYear() 4桁の年 getYear() は非推奨なので使わないこと
getMonth() 0~11 実際の月にするには +1 する
getDate() 1~31 月の日付
getDay() 0~6 0 = 日曜日。月曜日ではありません!
getHours() 0~23 —
getMinutes() 0~59 —
getSeconds() 0~59 —

getDay() は曜日を返し、月の日付ではありません。月の日付を取得するには getDate() を使います。初心者がよく混同します。

(3) 日付と時刻の設定

対応する set メソッドがあります:setFullYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()。設定した値が範囲を超えると自動的に繰り上がります。

HTML
<script>
const d = new Date(2025, 5, 19);
d.setDate(32); // 自動的に7月2日になる
console.log(d.toLocaleDateString());
</script>

(4) 日付のフォーマット

メソッド 出力例
toLocaleDateString() "2025/6/19"
toLocaleTimeString() "10:30:00"
toLocaleString() "2025/6/19 10:30:00"

これらのメソッドはブラウザのロケールに基づいて自動的にフォーマットされます。

(5) タイムスタンプと時間差の計算

タイムスタンプとは、1970年1月1日 00:00:00 UTC から経過したミリ秒の数です。

HTML
<script>
console.log(Date.now());           // 現在のタイムスタンプを取得
console.log(new Date().getTime()); // 上記と同じ
</script>

時間差を計算する基本アプローチ:2つのタイムスタンプを引いてミリ秒の差を求め、その後変換します。

HTML
<script>
const start = Date.now();
for (let i = 0; i < 1000000; i++) {} // 何らかの処理をシミュレート
const end = Date.now();
const diff = end - start;        // ミリ秒
const diffSeconds = diff / 1000; // 秒
console.log("経過時間: " + diff + "ms(" + diffSeconds + "秒)");
</script>

(6) サンプル:現在の日付と時刻の表示

▶ 試してみよう

(7) サンプル:日付情報の詳細

▶ 試してみよう

(8) サンプル:カウントダウンタイマー

▶ 試してみよう

(9) サンプル:日付差分計算機

▶ 試してみよう

関連する日付メソッド:getFullYear() toISOString() getMonth() getHours() Date.now() getDate() getDay() Date set

❓ よくある質問

Q getMonth() に +1 が必要なのはなぜですか?
A Java の Date クラスがこのように設計されており、JavaScript がその「伝統」を継承しました。誰もがばかげた設計だと同意しますが、変更できません。既存のコードがこの動作に依存しすぎています。覚えましょう。
Q new Date("2025-06-19") と new Date(2025, 5, 19) には違いがありますか?
A あります。文字列で解析された日付はデフォルトで UTC の午前0時になりますが、パラメータ形式はローカル時刻を使用します。表示される時刻は8時間(UTC+8 の場合)異なることがあります。時刻ではなく日付だけが必要な場合は、パラメータ形式の方が安全です。
Q 年齢はどうやって計算しますか?
A 現在の年から誕生年を引き、今年の誕生日が過ぎているかどうかを確認します。現在の月が誕生月より少ない場合、または月が同じで現在の日が誕生日より少ない場合は、年齢から1を引きます。

📖 まとめ

📝 練習問題

  1. formatDate(date) 関数を書きましょう。"YYYY-MM-DD(曜日)" の形式で文字列を返してください。月と日がゼロパディングされていることを確認してください。
  2. getAge(birthday) 関数を書きましょう。日付文字列(例:"2000-03-15")を引数に取り、現在の年齢を満年数で返してください。
  3. 「何分前」機能を構築しましょう:過去の日付が与えられた場合、「X年Xか月X日前」または「X日前」または「X時間前」を表示し、時間差に基づいて適切なフォーマットを自動選択してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%