javascript - JS脚本持续时间

标签 javascript time duration

我编写的脚本有一个小问题,它应该以 hh:mm:ss 格式返回脚本的持续时间(执行时间)。

这是脚本:

var start = new Date();
{ 

CODE GOES IN HERE

}
var end = new Date();
var miliseconds = end - start;
function runTime(ms) {
var seconds = 0;
var minutes = 0;
var hours = 0;
if (ms > 1000) {
    seconds = (ms / 1000).toFixed(0);
    if (seconds > 60) {
        seconds -= 60;
        minutes = (seconds / 60).toFixed(0);
        if (minutes > 60) {
            minutes -= 60;
            hours = (minutes / 60).toFixed(0)
        }
    }
}
if (seconds.toString().length == 1) {
    var seconds = '0' + seconds;
}   
if (minutes.toString().length == 1) {
    var minutes = '0' + minutes;
}
if (hours.toString().length == 1) {
    var hours = '0' + hours;
}   
return("Job Done in: " + hours + ":" + minutes + ":" + seconds + "(" + miliseconds + "ms)");
 }
iimDisplay(runTime(miliseconds));

这些是一些示例输出:

Job Done in: 03:166:13548(13608024ms)
Job Done in: 00:51:3032(3091973ms)
Job Done in: 00:02:3706(3766265ms)
Job Done in: 00:50:2994(3053675ms)
Job Done in: 00:52:30(3152527ms)

正如您所看到的,有时它看起来不太正确,通常脚本会持续 40-60 分钟,因此大多数情况下分钟都是准确的。

最佳答案

我认为你的问题在这里:

if (seconds > 60) {
    seconds -= 60;
    minutes = (seconds / 60).toFixed(0);
    if (minutes > 60) {
        minutes -= 60;
        hours = (minutes / 60).toFixed(0)
    }
}

当秒大于 60 时,您只需取 60。例如,如果秒为 189,您将得到 129,而不是您想要的 9。您必须计算分钟,然后执行以下操作:

seconds = seconds - (minutes * 60);

您必须在几分钟内完成同样的事情,但需要花费数小时。

关于javascript - JS脚本持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114163/

相关文章:

c - 获取ubuntu存储大小下的时间

rust - 如何使用 Rust chrono 获得 1 天的持续时间?

ios - JWPlayer 中的总时间和耗时 - Objective-C

javascript - HTML 表单第一个下拉列表自动更改第二个下拉选项(续)

mysql - 将数据类型从 int 更改为 time 导致现有值出错

Javascript 相当于 Python 的 locals()?

time - 如何区分 LocalDateTime 中何时缺少 "second field"

java - 为什么 DurationFormatUtils 忽略格式中的年份?

javascript - 如何消除流类型的歧义

javascript - 我无法在React上正确调用其他组件中的模态组件