はじめに
頻繁に調べるのでそろそろ覚えようという意識で執筆。
時間を文字列 yyyy-MM-dd HH:mm:ss
に変換する
Intl.DateTimeFormat
使う案
const target_datetime = new Date('2006-01-02T15:04:05+09:00')
console.log(target_datetime)
// -> Mon Jan 02 2006 15:04:05 GMT+0900 (日本標準時)
const target_datetime_str_slash = Intl.DateTimeFormat(undefined, {
hour12: false,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit'
}).format(target_datetime);
console.log(target_datetime_str_slash)
// -> "2006/01/02 15:04"
const target_datetime_str_hyphen = target_datetime_str_slash.replace(/\//g, '-')
console.log(target_datetime_str_hyphen)
// -> "2006-01-02 15:04"
Intl.DateTimeFormat
使わない案
基本的には Intl.DateTimeFormat
使えば良さそうだけどこういう方法もあり。
const target_datetime = new Date('2006-01-02T15:04:05+09:00')
console.log(target_datetime)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)
const target_datetime_str = target_datetime.getFullYear() + '-'
+ ('0' + (target_datetime.getMonth() + 1)).slice(-2) + '-'
+ ('0' + target_datetime.getDate()).slice(-2) + ' '
+ ('0' + target_datetime.getHours()).slice(-2) + ':'
+ ('0' + target_datetime.getMinutes()).slice(-2) + ':'
+ ('0' + target_datetime.getSeconds()).slice(-2) + ''
console.log(target_datetime_str)
//-> "2006-01-02 15:04:05"
getFullYear()
と間違えて getYear()
を持ちいると 現在の年 - 1900
を取得してしまうので注意!
getDate()
と間違えて getDay()
を用いると曜日を取得してしまうので注意!
昨日の日付を取得する
NG
日付オブジェクト today
を定義してそこから-1日した結果を yesterday
に渡す、という処理で考えると失敗する。
// 当日の日付を定義する
const today = new Date()
// 当日の日付が出力される
console.log(today)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)
// todayオブジェクトを前日にし、
// yesterdayにはtodayオブジェクト(前日)のUNIX時間を渡すことになる
const yesterday = today.setDate(today.getDate() - 1)
// 前日の日付が出力される
console.log(today)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)
// 前日の日付がUXIN時間(ミリ秒)表記で出力される
console.log(yesterday)
// -> 1661879226000
OK
日付オブジェクト today
を定義し、それを用いて別の日付オブジェクト yesterday
も定義する。
そして yesterday
の日付を1日前に変更すればOK。
const today = new Date()
const yesterday = new Date(today.getTime())
yesterday.setDate(yesterday.getDate() - 1)
console.log(today)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)
console.log(yesterday)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)
上記はありがちなミスを説明するために当日と前日を同時に出力しているが、
昨日分のみ必要な場合は下記でOK。
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
console.log(yesterday)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)
setDate()
の細かい点は参考参照。