如果时间包含毫秒,则分钟和秒功能输出不需要的数字

时间:2016-10-31 06:54:25

标签: javascript

我从这里使用时间到小时,分钟,秒功能: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;
&#13;
&#13;

以上 JavaScript 块完全正常。但是,如果我要将time更改为等于122.33,则会显示如下内容:

  

2:02.3299999999999983

我该如何解决这个问题?

感谢。

编辑

忘记提及这不适用于转换时区。它用于将秒数转换为分钟数。秒(如果音频跨越那么长时间的小时数。)

4 个答案:

答案 0 :(得分:1)

使用Math.round()函数应用它将舍入值。

Refer the link

Math

&#13;
&#13;
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;
&#13;
&#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位小数。