我有这段代码:
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:00
,增加int。我找到了其他编程语言的答案,但没有找到JavaScript。任何帮助表示赞赏!
答案 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>
答案 1 :(得分:1)
我要取消删除,因为我认为这是最好的答案,我认为它具有学术价值。
vm.durationElapsed = new Date(null, null, null, null, null, secondsElapsed).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");