JavaScriptにおける一日の始まり
現在の日の始まりを示す日付オブジェクトを取得してみましょう:
let now = new Date();
let date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0);
ご存知のように、Dateオブジェクトのパラメータは末尾から省略することができます。この場合、時、分、秒は0の値になります。
これらを省略しましょう:
let now = new Date();
let date = new Date(now.getFullYear(), now.getMonth(), now.getDate());
しかし、日を省略することはできません。なぜなら、日を省略すると値は1になりますが、私たちには現在の日が必要だからです。Dateの動作ルールにより、年を省略せずに月を省略することもできません。
年、月、日を同時に省略することもできません。その場合、現在の時刻が取得されてしまいます。なぜこれが良くないのでしょうか?私たちには現在の年、月、日が必要なはずですよね。問題は、私たちには真夜中、つまり時、分、秒が0の値である必要があるということです。しかし、現在の時刻では、それらは真夜中ではなく現在の値になってしまいます。
一日の始まりから現在の時刻までの間に、何時間が経過したかを求めなさい。