我从这里使用时间到小时,分钟,秒功能:Javascript seconds to minutes and seconds
哪种方法可以正常工作,除非时间有几毫秒的时间。
这是当前(半修改的) JS 块:
var time = 122, // example time (2 minutes, 2 seconds)
mins = ~~(time / 60),
secs = time % 60;
var hrs = ~~(time / 3600),
mins = ~~((time % 3600) / 60),
secs = time % 60;
var ft = "";
if (hrs > 0) {
ft += "" + hrs + ":" + (mins < 10 ? "0" : "");
}
ft += "" + mins + ":" + (secs < 10 ? "0" : "");
ft += "" + secs;
console.log(ft);
&#13;
以上 JavaScript 块完全正常。但是,如果我要将time
更改为等于122.33
,则会显示如下内容:
2:02.3299999999999983
我该如何解决这个问题?
感谢。
编辑:
忘记提及这不适用于转换时区。它用于将秒数转换为分钟数。秒(如果音频跨越那么长时间的小时数。)
答案 0 :(得分:1)
使用Math.round()
函数应用它将舍入值。
var time = 122.33, // example time (2 minutes, 2 seconds)
mins = ~~(time / 60),
secs = time % 60;
var hrs = ~~(time / 3600),
mins = ~~((time % 3600) / 60),
secs = time % 60;
var ft = "";
if (hrs > 0) {
ft += "" + hrs + ":" + (mins < 10 ? "0" : "");
}
ft += "" + mins + ":" + (secs < 10 ? "0" : "");
ft += "" +Math.round( secs);
console.log(ft);
&#13;
答案 1 :(得分:1)
使用Math.trunc(time);
例如Math.trunc(122.33); // 122
答案 2 :(得分:0)
除非有非常令人信服的理由,否则您不应该自己编写时间转换/格式化。有关原因,请参阅此youtube。
结帐momentjs库。如果您想做更多工作并避免依赖,请使用Date内置库。
e.g。与MomentJS
> var moment = require('moment');
> var x_seconds = 122.33;
> moment(moment.duration(x_seconds, 'second').asMilliseconds()).format("mm:ss.SSS");
'02:02.330'
答案 3 :(得分:0)
有很多方法可以解决您的问题。但是,一种简单的方法是尝试.toFixed(n)
例如:var x = 10/3 ; x.toFixed(3)
会精确到3位小数。