teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

テキスト修正

2020/07/10 06:47

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  というものです。ですので、`timeRequired` や `timeElapsed` は日時を表すものであって、1時間や1分2秒だったりの時間幅を表しているわけではないです。この点がちょっとすっきりしないということであれば、時間幅を表すオブジェクトとして、より適切な
22
22
 
23
23
  Durations
24
- [https://momentjs.com/docs/#/durations/](https://momentjs.com/docs/#/durations)
24
+ [https://momentjs.com/docs/#/durations/](https://momentjs.com/docs/#/durations/)
25
25
 
26
26
  を使ったほうがよいかもしれません。以下はこれを使ったサンプルです。
27
27
 

4

テキスト修正

2020/07/10 06:47

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -21,9 +21,9 @@
21
21
  というものです。ですので、`timeRequired` や `timeElapsed` は日時を表すものであって、1時間や1分2秒だったりの時間幅を表しているわけではないです。この点がちょっとすっきりしないということであれば、時間幅を表すオブジェクトとして、より適切な
22
22
 
23
23
  Durations
24
- https://momentjs.com/docs/#/durations/
24
+ [https://momentjs.com/docs/#/durations/](https://momentjs.com/docs/#/durations)
25
25
 
26
- を使ったほうがよいです。以下はこれを使ったサンプルです。
26
+ を使ったほうがよいかもしれません。以下はこれを使ったサンプルです。
27
27
 
28
28
 
29
29
  - **動作確認用codepen:** [https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012](https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012)

3

テキスト修正

2020/07/10 04:48

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -25,6 +25,8 @@
25
25
 
26
26
  を使ったほうがよいです。以下はこれを使ったサンプルです。
27
27
 
28
- https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012
29
28
 
29
+ - **動作確認用codepen:** [https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012](https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012)
30
+
31
+
30
32
  ただしこの場合は、文字列の`'01:00:00'`や `'00h01m02s'` から、`moment.duration()` に渡すパラメータを作るところを自分で書く必要があります。

2

テキスト修正

2020/07/10 04:47

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -8,4 +8,23 @@
8
8
 
9
9
  console.log(timeRemaining); // => 3538
10
10
  ```
11
- - **動作確認用codepen:** [https://codepen.io/jun68ykt/pen/ExPLQbV?editors=0012](https://codepen.io/jun68ykt/pen/ExPLQbV?editors=0012)
11
+ - **動作確認用codepen:** [https://codepen.io/jun68ykt/pen/ExPLQbV?editors=0012](https://codepen.io/jun68ykt/pen/ExPLQbV?editors=0012)
12
+
13
+ ### 追記
14
+
15
+ 上記のコードでやっていることは、
16
+
17
+ - 今日の日付の1時0分0秒という日時を持ったmomentオブジェクトを作り、`timeRequired` に入れる。
18
+ - 今日の日付の0時1分2秒という日時を持ったmomentオブジェクトを作り、`timeElapsed` に入れる。
19
+ - 上記の2つの日時の差分を秒換算で、`timeRemaining` に得る。
20
+
21
+ というものです。ですので、`timeRequired` や `timeElapsed` は日時を表すものであって、1時間や1分2秒だったりの時間幅を表しているわけではないです。この点がちょっとすっきりしないということであれば、時間幅を表すオブジェクトとして、より適切な
22
+
23
+ Durations
24
+ https://momentjs.com/docs/#/durations/
25
+
26
+ を使ったほうがよいです。以下はこれを使ったサンプルです。
27
+
28
+ https://codepen.io/jun68ykt/pen/QWyxwOg?editors=0012
29
+
30
+ ただしこの場合は、文字列の`'01:00:00'`や `'00h01m02s'` から、`moment.duration()` に渡すパラメータを作るところを自分で書く必要があります。

1

テキスト修正

2020/07/10 04:45

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,10 +1,10 @@
1
1
  こんにちは
2
2
  以下のようにするのはいかがでしょう?
3
3
  ```javascript
4
- const timeRequired = moment('01:00:00', 'HH:mm:ss');
4
+ const timeRequired = moment('01:00:00', 'HH:mm:ss');
5
5
  const timeElapsed = moment('00h01m02s', 'HHhmmmsss');
6
6
 
7
- const timeRemaining = timeRequired.diff(timeElapsed, 'seconds');
7
+ const timeRemaining = timeRequired.diff(timeElapsed, 'seconds');
8
8
 
9
9
  console.log(timeRemaining); // => 3538
10
10
  ```