質問: 00:50:00 ### **うまくいかないこと** 上記の例のように二つの期間のformatがあっていいれば、差分は取れるのですが、、 以下のようにformatが違うため、うまく差分が取れないという状況です。 formatをコロンを使う方に統一してからmoment.jsで計算したいと思っています。 所要時間 01:00:00 経過時間 00h01m02s format変更方法についてどなたかヒント頂けると幸いです。 宜しくお願い致します。
回答: こんにちは 以下のようにするのはいかがでしょう? ``` const timeRequired = moment('01:00:00', 'HH:mm:ss'); const timeElapsed = moment('00h01m02s', 'HHhmmmsss'); const timeRemaining = timeRequired.diff(timeElapsed, 'seconds'); console.log(timeRemaining); // => 3538 ``` * **動作確認用codepen:** ### 追記 上記のコードでやっていることは、 * 今日の日付の1時0分0秒という日時を持ったmomentオブジェクトを作り、`timeRequired` に入れる。 * 今日の日付の0時1分2秒という日時を持ったmomentオブジェクトを作り、`timeElapsed` に入れる。 * 上記の2つの日時の差分を秒換算で、`timeRemaining` に得る。 というものです。ですので、`timeRequired` や `timeElapsed` は日時を表すものであって、1時間や1分2秒だったりの時間幅を表しているわけではないです。この点がちょっとすっきりしないということであれば、時間幅を表すオブジェクトとして、より適切な Durations を使ったほうがよいかもしれません。以下はこれを使ったサンプルです。 * **動作確認用codepen:** ただしこの場合は、文字列の`'01:00:00'`や `'00h01m02s'` から、`moment.duration()` に渡すパラメータを作るところを自分で書く必要があります。