LoginSignup
4

More than 5 years have passed since last update.

moment-duration-formatである時刻からある時刻までの経過時間を整形

Posted at

moment-duration-formatである時刻からある時刻までの経過時間を整形

ある時刻からある時刻までの経過時間、英語でいうdurationの操作は、時刻の操作とは別の難しさがあります。時刻を文字列整形するJavaScriptのライブラリとしてはMoment.jsが有名ですが、これはdurationの文字列整形はできません。例えば、99時間経ったら"99:00:00"のように表示したいとして、以下のように書いても上手くいきません。

const moment = require("moment");
moment(99 * 3600 * 1000).format("hh:mm:ss"); // 12:00:00

durationの文字列整形の方法をStackOverflowを漁ってみると独自に実装せいという意見がトップに来ます。しかし、見ると結構ややこしいので、何らかのライブラリを使いたいと思う人も多いのではないでしょうか。

そこで出てくるのがmoment-duration-formatです。このライブラリを使うと以下のように99時間経過したdurationを文字列整形できます。

const moment = require("moment");
require("moment-duration-format");
moment.duration(99 * 3600 * 1000, "ms").format("hh:mm:ss", { trim: false }); // 99:00:00

2行目のrequiremomentオブジェクトにdurationメソッドが生えます。

formatの第2引数に{ trim: false } を入れていますが、このオプションを入れると、例えば10秒経過していた場合、”00:00:10"になります。デフォルトのtrueだと"10"になります。

また、類似ライブラリでtwix.jsがあります。これもmoment.jsのプラグインとして動作しますが、Dateオブジェクトを2つ受け取ってDurationを得るAPIになっているようです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4