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のフォーマットに応じて、時刻を整形しています。

DjangoRailsなどのフレームワークを使い、SPAなどを作っていると、こういった時刻を指定のフォーマットに整形したいシーンが多く見られます。
この関数を使えば

  • 2020年06日03日
  • 2020-06-03
  • 2020/06/03

などのフォーマットに対応できるので便利かもしれません。



姉妹ブログを見に行く。

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク