JavascriptのDate型ではそのままではRDBMで使われている時刻形式
YYYY-MM-DD hh:mm:ss
のような形式はそのままでは出力できない。
注意点としてはgetMonth()は0~11を返すので実際の暦にする場合は+1する必要がある。
(個人的にはgetRealMonth()のような1~12を返すメソッドがあってもよいと思う)
各桁の0埋めは次のように空文字を連結させることで文字列にキャストして
dt.getFullYear()+”
その文字列に対してpadStart()で行う。
次のような関数を作ると便利かもしれない。
function datetimeFormat(dt){
const y = (dt.getFullYear()+'').padStart(4,'0');
const m = ((dt.getMonth()+1)+'').padStart(2,'0');
const d = (dt.getDate()+'').padStart(2,'0');
const h = (dt.getHours()+'').padStart(2,'0');
const i = (dt.getMinutes()+'').padStart(2,'0');
const s = (dt.getSeconds()+'').padStart(2,'0');
return `${y}-${m}-${d} ${h}:${i}:${s}`;
}
console.log(datetimeFormat(new Date()));// 2021-11-27 01:10:27
ちなみに、Google Cloud SpannerやElasticsearch など一部のDBで使われるタイムスタンプ形式の、
RFC3339の Zulu format であれば簡単に出力できるメソッドtoISOString()がある。
(new Date).toISOString(); // ‘2021-11-26T16:11:40.030Z’