実現したいこと
moment.jsを使って以下のように、2つの期間の差を求めて、残時間を抜き出したいと思っております。
所要時間 01:00:00
経過時間 00:10:00
所要時間 ー 経過時間 = 残時間
01:00:00 - 00:10:00 = 00:50:00
うまくいかないこと
上記の例のように二つの期間のformatがあっていいれば、差分は取れるのですが、、
以下のようにformatが違うため、うまく差分が取れないという状況です。
formatをコロンを使う方に統一してからmoment.jsで計算したいと思っています。
所要時間 01:00:00
経過時間 00h01m02s
format変更方法についてどなたかヒント頂けると幸いです。
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 08:22
回答1件
0
ベストアンサー
こんにちは
以下のようにするのはいかがでしょう?
javascript
1const timeRequired = moment('01:00:00', 'HH:mm:ss'); 2const timeElapsed = moment('00h01m02s', 'HHhmmmsss'); 3 4const timeRemaining = timeRequired.diff(timeElapsed, 'seconds'); 5 6console.log(timeRemaining); // => 3538
- 動作確認用codepen: https://codepen.io/jun68ykt/pen/ExPLQbV?editors=0012
追記
上記のコードでやっていることは、
- 今日の日付の1時0分0秒という日時を持ったmomentオブジェクトを作り、
timeRequired
に入れる。 - 今日の日付の0時1分2秒という日時を持ったmomentオブジェクトを作り、
timeElapsed
に入れる。 - 上記の2つの日時の差分を秒換算で、
timeRemaining
に得る。
というものです。ですので、timeRequired
や timeElapsed
は日時を表すものであって、1時間や1分2秒だったりの時間幅を表しているわけではないです。この点がちょっとすっきりしないということであれば、時間幅を表すオブジェクトとして、より適切な
Durations
https://momentjs.com/docs/#/durations/
を使ったほうがよいかもしれません。以下はこれを使ったサンプルです。
- 動作確認用codepen: https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012
ただしこの場合は、文字列の'01:00:00'
や '00h01m02s'
から、moment.duration()
に渡すパラメータを作るところを自分で書く必要があります。
投稿2020/07/09 07:41
編集2020/07/10 06:47総合スコア9058
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/09 08:09 編集
2020/07/09 08:27
2020/07/09 09:08
2020/07/09 09:27
2020/07/09 10:17 編集
2020/07/09 16:53
2020/07/10 04:19
2020/07/10 04:46
2020/07/10 08:20
2020/07/10 11:58
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。