小编典典

Angular.js:秒制时间架构过滤器

angularjs

我正在使用Angular.js,我有一个表示秒数的数字字符串(例如:)610

我需要一个将其转换为时间模式的过滤器:10:10(10分钟10秒= 610秒)。

我应该怎么做?


阅读 220

收藏
2020-07-04

共1个答案

小编典典

manzapanza的答案仅在秒数小于86400(1天)时有效。日期对象必须完全为零。同样,最好返回实际的date对象,以便angularjs不必再次创建它。

app.filter('secondsToDateTime', function() {
    return function(seconds) {
        var d = new Date(0,0,0,0,0,0,0);
        d.setSeconds(seconds);
        return d;
    };
});

<b>{{seconds | secondsToDateTime | date:'HH:mm:ss'}}</b>

编辑: 如果您希望小时数不超过24天而不是几天,最好不要使用Date:

app.filter('secondsToTime', function() {

    function padTime(t) {
        return t < 10 ? "0"+t : t;
    }

    return function(_seconds) {
        if (typeof _seconds !== "number" || _seconds < 0)
            return "00:00:00";

        var hours = Math.floor(_seconds / 3600),
            minutes = Math.floor((_seconds % 3600) / 60),
            seconds = Math.floor(_seconds % 60);

        return padTime(hours) + ":" + padTime(minutes) + ":" + padTime(seconds);
    };
});

<b>{{seconds | secondsToTime}}</b>
2020-07-04