回答編集履歴
1
[2018/11/7 11:38] 追加の質問内容と質問者のやりたい内容に応じて修正しました。
test
CHANGED
@@ -1,26 +1,62 @@
|
|
1
|
-
自身が提案する実装方法に
|
1
|
+
自身が提案する実装方法は、時刻・時間ともに、最も桁が小さい分に換算して、演算を行うものとなります。
|
2
|
-
|
3
|
-
- 値の保持や演算は、桁が最も小さい分に換算して行う。(DB等への保存もあれば、その値も分換算とする)
|
4
|
-
|
5
|
-
- 「hh:mm」の時刻表記や時間の取り扱いは、変換用の関数を作成して行う。
|
6
|
-
|
7
|
-
|
8
2
|
|
9
3
|
ソースコードは、以下のようになります。
|
10
4
|
|
11
5
|
```JavaScript
|
12
6
|
|
13
|
-
function
|
7
|
+
function testCalcTime() {
|
14
8
|
|
15
|
-
|
9
|
+
var time = '21:00';
|
16
10
|
|
17
|
-
|
11
|
+
var addhour = "4.5";
|
12
|
+
|
13
|
+
console.log(calcTime(time, addhour));
|
14
|
+
|
15
|
+
/** result: 25:30 */
|
18
16
|
|
19
17
|
|
20
18
|
|
21
|
-
|
19
|
+
var time = '27:15';
|
22
20
|
|
21
|
+
var addhour = "30.8";
|
22
|
+
|
23
|
+
console.log(calcTime(time, addhour));
|
24
|
+
|
25
|
+
/** result: 58:03 */
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
var time = '23:00';
|
30
|
+
|
31
|
+
var addhour = "-10.7";
|
32
|
+
|
33
|
+
console.log(calcTime(time, addhour));
|
34
|
+
|
35
|
+
/** result: 12:18 */
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
var time = '10:00';
|
40
|
+
|
41
|
+
var addhour = "-10.5";
|
42
|
+
|
43
|
+
console.log(calcTime(time, addhour));
|
44
|
+
|
45
|
+
/** result: 0:00 */
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
/** 指定された時刻に時間を足した時刻を計算する */
|
52
|
+
|
53
|
+
function calcTime(time, addhour) {
|
54
|
+
|
55
|
+
var calcTime = convertTimeToMinutes(time) + convertHourToMinutes(Number(addhour));
|
56
|
+
|
57
|
+
if (calcTime < 0) calcTime = 0;
|
58
|
+
|
23
|
-
|
59
|
+
return convertMinutesToTime(calcTime);
|
24
60
|
|
25
61
|
}
|
26
62
|
|
@@ -30,9 +66,9 @@
|
|
30
66
|
|
31
67
|
function convertTimeToMinutes(time){
|
32
68
|
|
33
|
-
|
69
|
+
var times = time.split(':');
|
34
70
|
|
35
|
-
|
71
|
+
return Number(times[0]) * 60 + Number(times[1]);
|
36
72
|
|
37
73
|
}
|
38
74
|
|
@@ -42,7 +78,7 @@
|
|
42
78
|
|
43
79
|
function convertHourToMinutes(hour){
|
44
80
|
|
45
|
-
|
81
|
+
return Math.floor(hour * 60); // とりあえず切り捨て
|
46
82
|
|
47
83
|
}
|
48
84
|
|
@@ -52,10 +88,8 @@
|
|
52
88
|
|
53
89
|
function convertMinutesToTime(minutes){
|
54
90
|
|
55
|
-
|
91
|
+
return Math.floor(minutes / 60) + ':' + ('00' + (minutes % 60)).slice(-2);
|
56
92
|
|
57
93
|
}
|
58
94
|
|
59
95
|
```
|
60
|
-
|
61
|
-
時間で小数を扱うと端数処理が発生するため、出力のみ(画面への表示等)に用いた方が良いと思います。
|