使用Javascript

时间:2015-11-01 23:14:07

标签: javascript angularjs momentjs angular-moment

我有这段代码:

    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)。

但格式为0102 ....最多为60,然后为01:0101:02等。

我想将其格式化为00:00:00,增加int。我找到了其他编程语言的答案,但没有找到JavaScript。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分: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>

Demo Plunker

答案 1 :(得分:1)

我要取消删除,因为我认为这是最好的答案,我认为它具有学术价值。

vm.durationElapsed = new Date(null, null, null, null, null, secondsElapsed).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");

答案发现于:https://stackoverflow.com/a/12612778/1507899