dayjsで秒数を時間表記に変換する

公開日時

jsで秒数を表示する際に、YouTube動画のように「H:mm:ss」の形式で時間表記にしたかったので対応方法を調べた。

今回は日付操作ライブラリとしてdayjsを使用していたので、dayjsでの実現方法になる。

↓のissueで同じ質問がされており、コメントに対応方法が記載されていた。

今回の用途では24時間以上の秒数を扱うことはなかったので、issueのコメントを参考に↓のように実装した。

import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
import utc from 'dayjs/plugin/utc'

dayjs.extend(utc)
dayjs.extend(duration)

let seconds = 12345

const currentTime = () => {
  const sub = dayjs().subtract(seconds, 'seconds')
  const duration = dayjs.duration(dayjs().diff(sub))
  return dayjs.utc(duration.asMilliseconds()).format('H:mm:ss')
}

console.log(currentTime()) // => 3:25:45

Related #js