【问题标题】:minutes and seconds function outputting unwanted numbers to end if time contains milliseconds如果时间包含毫秒,分钟和秒函数会输出不需要的数字以结束
【发布时间】:2016-10-31 06:54:25
【问题描述】:

我从这里使用了时间到小时、分钟、秒函数: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);

上面的 JavaScript 块完全可以正常工作。但是,如果我将time 更改为等于122.33,它将打印如下内容:

2:02.3299999999999983

我将如何解决这个问题?

谢谢。

编辑

忘了说这不是用来转换时区的。它用于将秒转换为分钟和秒(如果音频跨越那么长,则转换为小时)。

【问题讨论】:

标签: javascript


【解决方案1】:

Math.round() 函数一起应用它将对值进行四舍五入。

Refer the link

Math

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);

【讨论】:

  • 总是欢迎我给了链接它对数学计算的全面帮助。我总是从中学习。
【解决方案2】:

使用Math.trunc(time); 例如Math.trunc(122.33); // 122

【讨论】:

  • 哈哈,上面那家伙进的比较快。对不起,伙计,但感谢您的帮助! :)
【解决方案3】:

除非有一个非常令人信服的理由,否则您不应该自己编写时间转换/格式化。请参阅此youtube 了解原因。

查看momentjs 库。如果您想做更多的工作并避免依赖,请使用Date 内置库。

例如使用 MomentJS

> var moment = require('moment');
> var x_seconds = 122.33;
> moment(moment.duration(x_seconds, 'second').asMilliseconds()).format("mm:ss.SSS");
'02:02.330'

【讨论】:

  • .. 这不是时区。用于转换歌曲中的秒数。
  • 我知道,我在说一般性的观点。两个库都将进行转换,以及持续时间/差异。尝试自己滚动这些东西是有问题的,并且会导致您在路上痛苦。只需使用一个库并完成它。
  • 我没有为这么简单的事情使用库。这是毫无意义的。尤其是当它能够在一个 JavaScript 块中完成时。
【解决方案4】:

有很多方法可以解决您的问题。但一个简单的方法是尝试.toFixed(n)

例如:var x = 10/3 ; x.toFixed(3) 将精确到小数点后 3 位。

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2021-07-29
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多