JavaScript: 日時をフォーマットしたい
new Date() で作った Date オブジェクトをISO形式にフォーマットしたい。
const today = new Date()
単純に文字列にフォーマットするには、toString メソッドでいい。
today.toString()
//=> 'Mon Feb 09 2026 20:46:41 GMT+0900 (日本標準時)'
JavaScript の Date オブジェクトには toISOString メソッドがあるけど、これだとタイムゾーンが消えて UTC になってしまう。
today.toISOString()
//=> '2026-02-09T11:46:41.476Z'
調べたところフォーマットする方法はほかにもあるようだけど、yyyy-dd-mm みたいな書式指定できる方法はないようだった。探せば便利なパッケージがあるのかもしれないけど。
しかたがないので、不格好だけど関数を書いた。タイムゾーンのオフセットは +09:00 に決め打ちだ。
const formatDateTime = (dt) => {
const year = String(dt.getFullYear())
const month = String(dt.getMonth() + 1).padStart(2, '0')
const date = String(dt.getDate()).padStart(2, '0')
const dateString = [year, month, date].join('-')
const hour = String(dt.getHours()).padStart(2, '0')
const minute = String(dt.getMinutes()).padStart(2, '0')
const second = String(dt.getSeconds()).padStart(2, '0')
const timeString = [hour, minute, second].join(':')
return `${dateString}T${timeString}+09:00`
}
実行すると、こうなる。
formatDateTime(today)
//=> '2026-02-09T20:46:41+09:00'
