Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@keshihoriuchi

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

More than 3 years have passed since last update.

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になっているようです。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?