1

私はこのコードを持っています:

    function startStopwatch() {
        vm.lastTickTime = new Date();

        $interval.cancel(vm.timerPromise);
        vm.timerPromise = $interval(function() {
            var tickTime = new Date();
            var dateDiff = vm.lastTickTime.getTime() - tickTime.getTime();
            var secondsDiff = Math.abs(dateDiff / 1000);
            vm.secondsElapsed += Math.round(secondsDiff);
            vm.formattedSecondsElapsed = moment.duration(secondsElapsed, "seconds").format("HH:mm:ss");
            vm.lastTickTime = tickTime;
        }, 1000);
    }

ストップウォッチで「再生」ボタンが押されてから秒数 (int) を刻みます。

しかし、フォーマットは01, 02.... 最大 60 で、その後01:01,01:02などです。

00:00:00int をインクリメントして、としてフォーマットしたいと思います。他のプログラミング言語の回答は見つかりましたが、JavaScript は見つかりませんでした。どんな助けでも大歓迎です!

4

2 に答える 2

2

RJB から提供された回答を借りて、アルゴリズムをフィルターに変換します。

フィルター

app.filter('time', function() { 
    function isInt(n){
        return Number(n) === n && n % 1 === 0;
    }
    return function(val) {
        if (isInt(val))
            return new Date(null, null, null, null, null, val).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");

        return val;
    }
});

使用法

app.controller('ctrl', function($scope) {
    $scope.seconds = 25251;
});

HTML

<div ng-controller="ctrl">
      {{ seconds | time }}
</div>

デモプランカー

于 2015-11-02T00:54:46.977 に答える