JavaScriptで現在日時を取得する(new Date)の基本と実践
「今の日時が欲しい」ときは new Date()。これで現在の日時を表す Dateオブジェクトが作れます。そこから年・月・日・時・分・秒などを取り出して表示や計算に使います。
基本の使い方
const now = new Date();
console.log(now); // 例: Fri Dec 05 2025 09:27:00 GMT+0900 (Japan Standard Time)
JavaScript- 返り値: 現在日時を指す Dateオブジェクト。
- 時刻帯: デフォルトは実行環境のタイムゾーン(ブラウザなら端末設定)。
年月日・時分秒の取り出し
const now = new Date();
const year = now.getFullYear(); // 例: 2025
const month = now.getMonth() + 1; // 1〜12(getMonthは0〜11のため+1)
const date = now.getDate(); // 1〜31
const hour = now.getHours(); // 0〜23
const min = now.getMinutes(); // 0〜59
const sec = now.getSeconds(); // 0〜59
const ms = now.getMilliseconds(); // 0〜999
console.log(`${year}/${month}/${date} ${hour}:${min}:${sec}`);
JavaScript- ポイント: 月は0始まり。表示する時は必ず「+1」。
- 曜日:
now.getDay()は 0(日)〜6(土)。表示したい文字列は自分で対応表を用意。
よく使う表示フォーマット
日本式の簡易表示(ゼロ埋めあり)
const now = new Date();
const pad = n => String(n).padStart(2, "0");
const y = now.getFullYear();
const m = pad(now.getMonth() + 1);
const d = pad(now.getDate());
const h = pad(now.getHours());
const mi = pad(now.getMinutes());
const s = pad(now.getSeconds());
console.log(`${y}年${m}月${d}日 ${h}:${mi}:${s}`); // 2025年12月05日 09:27:00
JavaScriptロケール任せで整形(toLocaleString)
const now = new Date();
console.log(now.toLocaleString("ja-JP", { timeZone: "Asia/Tokyo" }));
// 例: 2025/12/5 9:27:00
JavaScript- ポイント: ロケールとタイムゾーンを指定すれば、地域の慣習で表示される。
ISO形式(APIやログ向け)
const now = new Date();
console.log(now.toISOString()); // 例: 2025-12-05T00:27:00.000Z(UTC基準)
JavaScript- ポイント: UTCでの標準書式。タイムゾーンに左右されない。
現在時刻の数値(タイムスタンプ)
const ts = Date.now(); // 現在のミリ秒(1970-01-01 UTCからの経過)
console.log(ts); // 例: 1764894420000
// ミリ秒→Date
const d = new Date(ts);
JavaScript- 用途: 経過時間の計測、ソート、ユニークIDの一部など。
便利テンプレート集
曜日を日本語で表示
const days = ["日","月","火","水","木","金","土"];
const now = new Date();
const w = days[now.getDay()];
console.log(`${now.getFullYear()}年${now.getMonth()+1}月${now.getDate()}日(${w})`);
JavaScriptカウントダウンの残り時間表示
function formatCountdown(ms) {
const pad = n => String(n).padStart(2, "0");
const totalSec = Math.floor(ms / 1000);
const h = pad(Math.floor(totalSec / 3600));
const m = pad(Math.floor((totalSec % 3600) / 60));
const s = pad(totalSec % 60);
return `${h}:${m}:${s}`;
}
// 例: 締切までの差分
const deadline = new Date("2025-12-05T10:00:00+09:00");
const now = new Date();
console.log(formatCountdown(deadline - now)); // 例: 00:33:00
JavaScript今日の日付を「YYYY-MM-DD」で
const todayStr = (() => {
const now = new Date();
const pad = n => String(n).padStart(2, "0");
return `${now.getFullYear()}-${pad(now.getMonth()+1)}-${pad(now.getDate())}`;
})();
console.log(todayStr); // 例: 2025-12-05
JavaScriptよくある落とし穴と対策
- 月が0始まり: 表示時は必ず +1。関数やテンプレで共通化すると安全。
- タイムゾーンの違い: ISOはUTC、toLocaleStringは環境依存。確実に日本時間で表示したいなら
timeZone: "Asia/Tokyo"を指定。 - ゼロ埋めの不足: 1桁の月・日・時・分・秒は padStart(2,”0″) で揃える。
- 手書き整形の複雑さ: 表示は toLocaleString に任せると早い。API連携は toISOString を使うと安定。
練習問題(手を動かして覚える)
- 1. 現在を日本式でゼロ埋め表示
const now = new Date();
const pad = n => String(n).padStart(2,"0");
console.log(`${now.getFullYear()}年${pad(now.getMonth()+1)}月${pad(now.getDate())}日 ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`);
JavaScript- 2. ロケールで日本時間表示
console.log(new Date().toLocaleString("ja-JP", { timeZone: "Asia/Tokyo" }));
JavaScript- 3. 7日後の日時をISOで出力
const now = new Date();
const sevenDaysLater = new Date(now.getTime() + 7*24*60*60*1000);
console.log(sevenDaysLater.toISOString());
JavaScript直感的な指針
- 今が欲しい: new Date()。
- 表示は簡単に: toLocaleString(ロケール・タイムゾーン指定)。
- API連携: toISOString(UTCで安定)。
- 年月日等: get系メソッドで取り出し、月は+1、ゼロ埋めはpadStart。
