js时间计算

前言

两个时间相加减这种实例代码js很难找到,都是包含了日期去加减。后来我发现有一种多次转换的方法可以实现,也就是先把一个时间转换成时间戳(秒),计算后再转换成时间就好了。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//时间转秒
var time_to_sec = function (time) {
var s = '';

var hour = time.split(':')[0];
var min = time.split(':')[1];
var sec = time.split(':')[2];

s = Number(hour*3600) + Number(min*60) + Number(sec);

return s;
};

//秒转时间
var sec_to_time = function(s) {
var t;
if(s > -1){
var hour = Math.floor(s/3600);
var min = Math.floor(s/60) % 60;
var sec = s % 60;
if(hour < 10) {
t = '0'+ hour + ":";
} else {
t = hour + ":";
}

if(min < 10){t += "0";}
t += min + ":";
if(sec < 10){t += "0";}
t += sec.toFixed(2);
}
return t;
}

//主入口
function mian() {
var time1 = time_to_sec(WSH.Arguments(0));
var opr = WSH.Arguments(1);
var time2 = time_to_sec(WSH.Arguments(2));
var time3 = eval(time1 + opr + time2);
//WSH.Echo(time3);
var time4 = sec_to_time(time3);
WSH.Echo(time4);
}
mian();

毫秒

t += sec.toFixed(2);这里后面跟上toFixed(2)可以加上保留两位数的毫秒。

时间转秒

依靠s = Number(hour*3600) + Number(min*60) + Number(sec);这一条算法进行转换。

秒转时间

1
2
3
var hour = Math.floor(s/3600);
var min = Math.floor(s/60) % 60;
var sec = s % 60;

对每个时间单位进行计算转换。

终端设计

1
2
3
var time1 = time_to_sec(WSH.Arguments(0));
var opr = WSH.Arguments(1);
var time2 = time_to_sec(WSH.Arguments(2));

这里定义了三个外部参数,两个时间和中间的计算符号。

参考文献

js怎样将秒拼接为时分秒显示?
[ JS ] 如何把字符串类型的加减乘除转化成数学运算符?