【发布时间】:2015-08-10 02:46:46
【问题描述】:
以下是将毫秒转换为人类可读时间的方法。但是我收到了一条评论,说它可能会返回一些基数的意外结果。
function msToTime(duration, sign) {
var milliseconds = parseInt((duration % 1000) / 100),
seconds = parseInt((duration / 1000) % 60),
minutes = parseInt((duration / (1000 * 60)) % 60),
hours = parseInt((duration / (1000 * 60 * 60)) % 24);
hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? " " + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
return minutes + sign + seconds;
}
$("div").text(msToTime(1203400, ":"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
这是我收到的评论:“如果未提供基数,parseInt() 函数可能会返回不希望的和/或意外的结果。请确保在所有 parseInt() 实例上都使用基数。”
我尝试添加日、周、月、年等,但我不确定这是否正确。它也适用于一段音乐。所以我认为不会有任何情况超过几个小时。
有什么办法可以确保方法的结果始终正确吗?
【问题讨论】:
-
也许您应该考虑到发表评论的人是错误的,因为您的代码表明
durration已经是一个 int。如果我可以是一个字符串,比如一个十六进制数字,那么你的代码会以不同的方式被破坏 -
上面的评论想说的是:你实际上想
parseInt你的持续时间在你开始用它执行计算。在你的例子中,事情会在那之前发生。
标签: javascript jquery function parseint