angularjs - property - angular指令




Angularjs秒到時間過濾 (4)

manzapanza的答案僅在秒數小於86400(1天)時有效。 日期對象需要完全為零。 此外,最好返回實際的日期對象,以便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而沒有包裝到幾天,最好不要使用日期:

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>

我正在使用Angularjs。

我有一串數字,例如: 237 。 這意味著秒。 我需要它改為: 2:342:343:42:54

我需要幾秒鐘的時間過濾。 我該怎麼做?

謝謝。


嘗試這個:

app.filter('secondsToHHmmss', function($filter) {
    return function(seconds) {
        return $filter('date')(new Date(0, 0, 0).setSeconds(seconds), 'HH:mm:ss');
    };
})

HTML:

<b>{{seconds | secondsToHHmmss}}</b>

我認為沒有必要使用自定義過濾器

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

function Scoper($scope) {
    $scope.seconds = '79000';
    $scope.hours = parseInt($scope.seconds / 3600);
}

通過@manzapanza解決方案幾天:

  $scope.duration_for = function(seconds){
    if(!seconds) return
    var duration = new Date(1970, 0, 1).setSeconds(seconds)

    var mask = 'HH:mm'
    if(seconds >= 86400){
      mask = 'd days,' + mask
    }

    return $filter('date')(duration, mask);
  }

在視圖中:

{{duration_for(100500)}}






time