JavaScriptのsetHours()は分や秒も引数で設定できる

setHours()とは

setHours() メソッドは指定された日付の「時」を設定できます。

例えば new Date(2023, 0, 1) を12:00に設定したい場合は以下のようになります。

const now = new Date(2023, 0, 1)
now.setHours(12)
console.log(new Date(now))
// Sun Jan 01 2023 12:00:00 GMT+0900 (日本標準時)

第2引数に分、第3引数に秒を設定可能

分を設定する場合はsetMinutes()、秒を設定する場合はsetSeconds()を使用すると説明されていることが多いですが、setHours()は第2引数に分、第3引数に秒を設定可能です。

そのため、例えば以下のコードは…

const now = new Date(2023, 0, 1)
now.setHours(12)
now.setMinutes(34)
now.setSeconds(56)
new Date(now)
// Sun Jan 01 2023 12:34:56 GMT+0900 (日本標準時)

以下のようにsetHours()だけで設定できます。

const now = new Date(2023, 0, 1)
now.setHours(12, 34, 56)
console.log(new Date(now))
// Sun Jan 01 2023 12:34:56 GMT+0900 (日本標準時)

setHours()なのに分や秒が設定可能なのは不思議な感じがしますが、これは正式な使い方なので、どのブラウザでも使用可能です。

ちなみにsetFullYear()には第2引数に月、第3引数に日を指定可能です。

setFullYear()の年月日の同時指定はあまり使用されることはないですが、覚えておいて損はないでしょう。

const now = new Date()
now.setFullYear(2023, 0, 1)
console.log(new Date(now))
// Sun Jan 01 2023 11:30:15 GMT+0900 (日本標準時)