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