やりたいこと
今日の日付の時間と分を指定したい。
例えば、今日が2020年4月5日だとして、new Date()
で以下のようになるのを
Sun Apr 01 2020 12:15:00 GMT+0900 (日本標準時)
時間と分を指定したい。
今日の12時30分を指定したいなら
Sun Apr 01 2020 12:30:00 GMT+0900 (日本標準時)
方法
まず、new Date()
をすると
new Date()
=> Sun Apr 05 2020 12:15:30 GMT+0900 (日本標準時)
今日の日付と時間が取得できます!
で次に、new Date(2020, 5, 10, 10, 10)
とすると
new Date(2020, 3, 10, 15, 20)
=> Fri Apr 10 2020 10:15:20 GMT+0900 (日本標準時)
指定した日付と時間が取得できますね!
なので、今日の日付の時間と分を指定したい場合、
例えば今日が4月5日で10時10分を指定したかったらnew Date(2020, 3, 5, 10, 10)
とすれば指定した今日の日付の時間と分を取得できます。
しかし問題が!
「今日」というのを動的に変えたい場合、年や日付も指定してしまっているのでこれでは良くないです...。(4月5日の今日は4月5日だし、4月10日の今日は4月10日なので)
なのでこうする
今日の日付を4月5日として、10時10分を指定したい場合、
const date = new Date() // 今日の日付
date.setHours(10) // getHoursで時間を指定
date.setMinutes(10) // getHoursで分を指定
console.log(date)
// => Fri Apr 5 2020 10:10:20 GMT+0900 (日本標準時)
(結論)面倒くさいのでこうできる
setMinutesを使わなくても、
setHoursの第一引数で「時間」、第二引数で「分」を指定できるみたいです。
setHours(hour, minute)
(知らなかった... ><)
const date = new Date() // 今日の日付
date.setHours(10, 10) // getHoursで時間と分を指定
console.log(date)
// => Fri Apr 5 2020 10:10:20 GMT+0900 (日本標準時)
これで「今日」の時間と分を指定できました〜!
JavaScript の Date は罠が多すぎる
とりあえず、上記の記事にも書いているみたいに色々とJSのDateは面倒なのでできるだけ使いたくない...。
使う場面が多い場合はmoment.jsとかdayjs、date-fnsとかのライブラリを使った方が良さげ。