第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}日`);