JavaScriptで時刻を表す文字列をymdのフォーマットに整形する
329, 2020-06-03
時刻をymdのフォーマットに整形する
時刻をymd
のフォーマットに整形する、つまり、「〇〇〇〇年〇〇月〇〇日」のフォーマットにしたいわけですが、みなさんならどんな実装を考えますか?
私は、ついさっきこんな関数を作りました。
/** * 数値を0埋めの二桁の文字列にする * * @param {Number} n */ export function pad2 (n) { if (n < 10) { return '0' + n } return '' + n } /** * 時刻文字列から YMD 形式の時刻文字列を生成する * format は 'jpn', '-', '/' のいずれかである * * @param {String} strDatetime ソースとなる時刻の文字列 * @param {String} format フォーマット * * @return {String} */ export function ymd (strDatetime, format='jpn') { if (typeof strDatetime !== 'string') { throw new Error('invalid type') } const d = new Date(strDatetime) const y = d.getFullYear() const m = pad2(d.getMonth() + 1) const D = pad2(d.getDate()) switch (format) { default: throw new Error('invalid format') break case 'jpn': return `${y}年${m}月${D}日` break; case '-': return `${y}-${m}-${D}` break; case '/': return `${y}/${m}/${D}` break; } }
関数ymd
が今回の主役です。この関数の引数には、時刻を表す文字列を渡します。
時刻を表す文字列というのは
2020-06-03T01:06:52.174569+09:00
というような文字列のことです。このフォーマットの文字列は、Date
クラスに渡すことが出来ます。
ymd
関数は内部でDate
クラスを呼び出し、メソッドから年月日を取り出しています。そしてその年月日を使って引数format
のフォーマットに応じて、時刻を整形しています。
Django
やRails
などのフレームワークを使い、SPAなどを作っていると、こういった時刻を指定のフォーマットに整形したいシーンが多く見られます。
この関数を使えば
- 2020年06日03日
- 2020-06-03
- 2020/06/03
などのフォーマットに対応できるので便利かもしれません。
姉妹ブログを見に行く。