第11章 日付と時間
Dateオブジェクトの基本
JavaScriptにおける日付と時間は、Dateオブジェクトを使って取り扱います。
// 現在の日付と時間を持つDateオブジェクトを作成
let currentDate = new Date();
console.log(currentDate); // 現在の日付と時間を表示
日付と時間の取得
Dateオブジェクトから、日、月、年、時間、分、秒などを取得できます。
let date = new Date();
// 年、月、日を取得
let year = date.getFullYear(); // 2023 (例)
let month = date.getMonth() + 1; // 1から12の範囲で取得
let day = date.getDate();
// 時間、分、秒を取得
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
console.log(`今日は${year}年${month}月${day}日, ${hours}時${minutes}分${seconds}秒です`);
日付と時間の設定
Dateオブジェクトには、日、月、年、時間、分、秒などを設定するためのメソッドもあります。
let date = new Date();
// 年、月、日を設定
date.setFullYear(2024);
date.setMonth(11); // 0から11の範囲で設定 (12月は11)
date.setDate(24);
// 時間、分、秒を設定
date.setHours(12);
date.setMinutes(0);
date.setSeconds(0);
console.log(date); // 2024年12月24日 12:00:00を表示
日付のフォーマットと操作
Dateオブジェクトを文字列としてフォーマットしたり、日付を操作することも可能です。
let date = new Date();
// 日付を文字列としてフォーマット
let dateString = date.toDateString(); // "Wed Aug 02 2023" (例)
let timeString = date.toTimeString(); // "10:30:00 GMT+0900 (JST)" (例)
// 7日後の日付を取得
let futureDate = new Date();
futureDate.setDate(date.getDate() + 7);
console.log(futureDate);
タイムゾーンとUTC
Dateオブジェクトはシステムのローカルタイムゾーンを元に動作しますが、UTC(協定世界時)を元に動作させることもできます。
let date = new Date();
// UTCの年、月、日を取得
let utcYear = date.getUTCFullYear();
let utcMonth = date.getUTCMonth() + 1;
let utcDay = date.getUTCDate();
console.log(`UTCの日付: ${utcYear}年${utcMonth}月${utcDay}日`);
Dateオブジェクトの他の作成方法
Dateオブジェクトを作成する方法はいくつかあります。
// タイムスタンプ (1970年1月1日からのミリ秒) を使用してDateオブジェクトを作成
let dateFromTimestamp = new Date(1627958400000);
console.log(dateFromTimestamp);
// 年、月、日を指定してDateオブジェクトを作成
let dateFromValues = new Date(2023, 7, 2); // 2023年8月2日
console.log(dateFromValues);
ミリ秒単位の取得と設定
ミリ秒単位での日付と時間の取得や設定もできます。
let date = new Date();
// ミリ秒を取得
let milliseconds = date.getMilliseconds();
// ミリ秒を設定
date.setMilliseconds(500);
日付の比較
Dateオブジェクトはそのままでは比較できませんが、ミリ秒のタイムスタンプに変換して比較できます。
let date1 = new Date(2023, 7, 1);
let date2 = new Date(2023, 7, 2);
if (date1.getTime() < date2.getTime()) {
console.log("date1はdate2よりも前の日付です");
}
日付文字列の解析
特定のフォーマットの文字列からDateオブジェクトを作成することもできます。
let dateFromString = new Date("2023-08-02T10:30:00Z");
console.log(dateFromString);
経過時間の計算
2つの日付の差をミリ秒で計算し、それを使って日数や時間数を求めることができます。
let startDate = new Date(2023, 7, 1);
let endDate = new Date(2023, 7, 10);
let differenceInMilliseconds = endDate - startDate;
let differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24);
console.log(`日数の差: ${differenceInDays}日`);
練習問題1.
現在の日付をYYYY-MM-DDの形式で表示するコードを書いてください。
練習問題2.
現在から7日後の日付を求めて、その曜日を日本語で表示してください。(例: "月曜日")
練習問題3.
以下の2つの日付の間には何日間の差があるか計算するコードを書いてください。
2023年8月1日
2023年8月15日
// 回答例:
let date1 = new Date(2023, 7, 1);
let date2 = new Date(2023, 7, 15);
let differenceInMilliseconds = date2 - date1;
let differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24);
console.log(`日数の差: ${differenceInDays}日`);