我想转换时间的持续时间,即秒数,以冒号分隔的时间字符串(hh:mm:ss)

我在这里找到了一些有用的答案,但它们都谈到了转换成x小时和x分钟的格式。

那么有一个小片段,这是在jQuery或只是原始JavaScript?


当前回答

以下是我的解决方案。您可以尝试下面的代码片段。

函数secToHHMM(sec) { var d = new Date(); d.setHours (0); d.setMinutes (0); d.setSeconds (0); d = new Date(d.getTime() + sec*1000); 返回d.toLocaleString (en)。分割(' ')[1]; }; alert('One hour: ' + secToHHMM(60*60));/ /“01:00:00” alert(' 1小时5分钟:' + secToHHMM(60*60 + 5*60));/ /“01:05:00” alert(' 1小时5分23秒:' + secToHHMM(60*60 + 5*60 + 23));/ /“01:05:23”

其他回答

我喜欢Powtac的答案,但我想在angular.js中使用它,所以我用他的代码创建了一个过滤器。

.filter('HHMMSS', ['$filter', function ($filter) {
    return function (input, decimals) {
        var sec_num = parseInt(input, 10),
            decimal = parseFloat(input) - sec_num,
            hours   = Math.floor(sec_num / 3600),
            minutes = Math.floor((sec_num - (hours * 3600)) / 60),
            seconds = sec_num - (hours * 3600) - (minutes * 60);

        if (hours   < 10) {hours   = "0"+hours;}
        if (minutes < 10) {minutes = "0"+minutes;}
        if (seconds < 10) {seconds = "0"+seconds;}
        var time    = hours+':'+minutes+':'+seconds;
        if (decimals > 0) {
            time += '.' + $filter('number')(decimal, decimals).substr(2);
        }
        return time;
    };
}])

它在功能上是相同的,除了我添加了一个可选的小数字段来显示小数秒。像使用其他过滤器一样使用它:

{{elapsedTime | HHMMSS}}显示:01:23:45

{{elapsedTime | HHMMSS: 3}}显示:01:23:45.678

以下是我的解决方案。您可以尝试下面的代码片段。

函数secToHHMM(sec) { var d = new Date(); d.setHours (0); d.setMinutes (0); d.setSeconds (0); d = new Date(d.getTime() + sec*1000); 返回d.toLocaleString (en)。分割(' ')[1]; }; alert('One hour: ' + secToHHMM(60*60));/ /“01:00:00” alert(' 1小时5分钟:' + secToHHMM(60*60 + 5*60));/ /“01:05:00” alert(' 1小时5分23秒:' + secToHHMM(60*60 + 5*60 + 23));/ /“01:05:23”

这里有一个相当简单的解决方案,四舍五入到最近的秒!

var returnElapsedTime =函数(epoch) { //我们假设epoch以秒为单位 Var小时= epoch / 3600, 分钟=(小时% 1)* 60, 秒=(分钟% 1)* 60; 返回Math.floor(小时)+ ":" + Math.floor(分钟)+ ":" + Math.round(秒); }

在谷歌上搜索的结果是这样的:

function secondsToTime(secs)
{
    secs = Math.round(secs);
    var hours = Math.floor(secs / (60 * 60));

    var divisor_for_minutes = secs % (60 * 60);
    var minutes = Math.floor(divisor_for_minutes / 60);

    var divisor_for_seconds = divisor_for_minutes % 60;
    var seconds = Math.ceil(divisor_for_seconds);

    var obj = {
        "h": hours,
        "m": minutes,
        "s": seconds
    };
    return obj;
}
String.prototype.toHHMMSS = function () {
    var sec_num = parseInt(this, 10); // don't forget the second param
    var hours   = Math.floor(sec_num / 3600);
    var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
    var seconds = sec_num - (hours * 3600) - (minutes * 60);

    if (hours   < 10) {hours   = "0"+hours;}
    if (minutes < 10) {minutes = "0"+minutes;}
    if (seconds < 10) {seconds = "0"+seconds;}
    return hours+':'+minutes+':'+seconds;
}

你现在可以这样使用它:

alert("5678".toHHMMSS());

工作代码片段:

String.prototype.toHHMMSS = function () { var sec_num = parseInt(this, 10); // don't forget the second param var hours = Math.floor(sec_num / 3600); var minutes = Math.floor((sec_num - (hours * 3600)) / 60); var seconds = sec_num - (hours * 3600) - (minutes * 60); if (hours < 10) {hours = "0"+hours;} if (minutes < 10) {minutes = "0"+minutes;} if (seconds < 10) {seconds = "0"+seconds;} return hours + ':' + minutes + ':' + seconds; } console.log("5678".toHHMMSS());