前言
两个时间相加减这种实例代码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); 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 ] 如何把字符串类型的加减乘除转化成数学运算符?