dayjsのduration.format()まだマージされていない
JS系で、時間・日時を取り扱うライブラリにdayjsというものがある。(他の有名どころだとMoment.js1とか)
ある時、formatを使って秒数を「HH:mm:ss」の形式で表現したくなった。 例えば、144,930秒で表現すると「40:15:30」となる。
momentだと上記のようなケースに対応したライブラリがある。
GitHub - jsmreese/moment-duration-format: Format function plugin for the Moment Duration object.
momentと似た感じで、 dayjs.duration({ seconds: time }).format('HH:mm:ss') ※timeは任意の秒数
でフォーマットできないかと思ったけど、まだdurationでformatは使えないらしい。
ただ、最近devブランチに duration().format
を使えるようにしたブランチがマージされたらしいので、これがmasterにマージされれば晴れて上記のようなフォーマットができるようになると思われる。
ちなみに、dayjs()で生成したものにシンプルにformatを使用しただけだと、24時間ごとに一日とカウントされ、24時間以上のカウントには対応できない。
const time = 144930 * 1000 // dayjs(time)のtimeはミリ秒で計算されるため、秒数をミリ秒に変換している dayjs(time).format('HH:mm:ss') => 16:15:30
2021/2/11追記
どうやら上記のような対応の予定は無いらしい。 残念。
Request - Format duration days as more than 24h · Issue #1376 · iamkun/dayjs · GitHub
-
ただし、Moment.jsは近い将来新しい開発が停止になるそう cpoint-lab.co.jp↩