日付(Date)
プログラミングで「日付(ひづけ)」や「時間(じかん)」をあつかうときは、Dateオブジェクト を使います。
留学生の方には、Dateオブジェクトは 「世界中どこでも使える、魔法の時計(とけい)」 だと教えてあげてください。
I. Dateオブジェクト
1. Dateオブジェクトの作り方
JavaScriptで時計を動かすには、まず new Date() と書きます。
new を使うことで、メモリの中に新しい「日付というデータの箱」を作り、その場所を指し示すようになります。
// 今(現在)の日付と時間を手に入れる
const now = new Date();
console.log(now);
// 結果例(れい):Fri Feb 20 2026 16:40:00 ...(実行した時の時間が出ます)
また、**「特定の日(過去や未来)」**の時計を作ることもできます。
// 2026年1月1日の時計を作る
const newYear = new Date("2026-01-01");
// 2026年4月1日0時0分0秒の時計を作る(年, 月, 日, 時, 分, 秒)
const aprilFool = new Date(2026, 3, 1, 0, 0, 0);
「プリミティブ型」と「オブジェクト型」の違い
ここで「プリミティブ型」と「オブジェクト型」の違いを理解しましょう。
- プリミティブ型(数値や文字列): データそのものが変数に入っています。
- オブジェクト型(Dateなど): データそのものではなく、データが保存されているメモリ上の「場所(参照:さんしょう)」が変数に入っています。
So What?(なぜ大切なの?) これらの組み込みオブジェクトを使いこなすことは、プログラミングの世界で「車輪の再発明(しゃりんのさいはつめい:すでにあるものを一から作る無駄なこと)」を防ぐことになります。用意された道具を使うことで、開発スピードを劇的に速めることができます。
2. よく使うメソッド(情報の取り出し方)
作った時計から、「年」「月」「日」をバラバラに取り出すことができます。
| 知りたいこと | メソッド名 | 注意点(ここが難しい!) |
|---|---|---|
| 年 | getFullYear() | getYear ではなく Full をつけます。 |
| 月 | getMonth() | 0から始まります(0=1月, 1=2月…) ⚠️ |
| 日 | getDate() | getDay ではないので注意! |
| 曜日 | getDay() | 0(日) 〜 6(土) の数字で返ってきます。 |
| 時間 | getHours() | 0 〜 23時。 |
3. 初心者が絶対(ぜったい)に間違えるポイント
Dateオブジェクトには、初心者泣かせの「ひっかけ問題」が2つあります。ここを優しく教えてあげましょう。
① 月(Month)は 0 から数える
配列と同じで、**1月は 0** です。
- 1月 →
0 - 12月 →
11
Tip
解決策: 画面に表示するときは、いつも
getMonth() + 1と書こうね!と教えてあげてください。
② 「日」と「曜日」の名前
getDate(): 1日、2日…という 「日付」getDay(): 月、火…という 「曜日」
4. かっこいい日付の表示かた(日本でのマナー)
日本でよく使う「2026年2月20日」という形式にするコード例です。
const today = new Date();
const year = today.getFullYear();
const month = today.getMonth() + 1; // 1を足すのを忘れないで!
const date = today.getDate();
console.log(`${year}年${month}月${date}日`);
// 結果:2026年2月20日
まとめ
留学生へのアドバイス:
new Date()は「今の時計」を作る合言葉!- 月(Month) を使うときは、いつも心に 「+1」 を!
- 曜日(Day) は数字で返ってくるから、日本語(月火水…)に直すときは配列を使うと便利だよ!
いかがでしょうか?「月が0から始まる」というルールさえクリアすれば、Dateオブジェクトはとても頼りになる道具になります。
II. 日付の計算
日付(ひづけ)の計算は、プログラミングでとてもよく使います。 例えば、「今日から3日後はいつ?」「テストまであと何日?」という計算です。
「Dateオブジェクトは、数字を書きかえるだけで自動でカレンダーをめくってくれる、かしこい時計(とけい)」 です。
1. 基本(きほん)のやりかた:set メソッドを使う
日付を計算するときは、まず今の情報を「ゲット(get)」して、計算したあとに「セット(set)」しなおします。
例:今日から「5日後」を計算する
const today = new Date(); // ① 今日の時計を作る
// ② 今の「日(Date)」をゲットして、5を足す
const futureDate = today.getDate() + 5;
// ③ 新しい数字をセットする
today.setDate(futureDate);
console.log(today.toLocaleDateString()); // 5日後の日付が出ます
2. ここがすごい!「繰り上がり(くりあがり)」の自動計算
留学生が一番感動(かんどう)するのは、JavaScriptが**「月末(げつまつ)」を勝手に計算してくれる**ところです。
例えば、**「1月31日の1日後」**を計算するとします。 普通なら「次は2月1日だ」と自分で考える必要がありますが、JavaScriptはこうなります:
const endOfMonth = new Date("2026-01-31");
endOfMonth.setDate(endOfMonth.getDate() + 1);
console.log(endOfMonth.toLocaleDateString()); // 自動で「2026/2/1」になる!
- 32日になっても大丈夫:
setDate(32)とすると、次の月の1日に自動で進みます。 - 13月になっても大丈夫:
setMonth(12)(13番目の月)とすると、次の年の1月に進みます。
3. 「あと何日?」の計算(ミリ秒のひき算)
「今日からイベントまであと何日?」を計算するときは、少し特殊な方法を使います。 日付を 「ミリ秒(とても小さな数字)」 に直して引き算をします。
const today = new Date();
const eventDay = new Date("2026-03-01");
// ① 引(ひ)き算(ざん)をして「ミリ秒」の差(さ)をだす
const diffMs = eventDay - today;
// ② ミリ秒を「日」に変換(へんかん)(へんかん)する
// 1日 = 24時間 × 60分 × 60秒 × 1000ミリ秒
const diffDays = Math.ceil(diffMs / (24 * 60 * 60 * 1000));
console.log(`イベントまであと ${diffDays} 日です!`);
Note
Math.ceil(マスシール)とは? 小数点(しょうすうてん)を切り上げる魔法です。残り時間が「1.2日」だったら「あと2日」と表示するために使います。Mathオブジェクト(数学の道具)についてはあとの章で説明します。
まとめ:留学生へのアドバイス
日付の計算を教えるときの合言葉はこれです!
- 「今の数字をゲットして、足して、セットする!」
- 「カレンダーの終わり(2月が28日か29日か、など)は、JavaScriptが全部やってくれるから任せてOK!」
| やりたいこと | 使うメソッド |
|---|---|
| 日を進める | getDate() + setDate() |
| 月を進める | getMonth() + setMonth() |
| 年を進める | getFullYear() + setFullYear() |
いかがでしょうか?「自分でカレンダーをめくらなくていい」というメリットが伝われば、日付の計算が楽しくなりますよ。
So What?(なぜ大切なの?) これらの組み込みオブジェクトを使いこなすことは、プログラミングの世界で「車輪の再発明(しゃりんのさいはつめい:すでにあるものを一から作る無駄なこと)」を防ぐことになります。用意された道具を使うことで、開発スピードを劇的に速めることができます。