我有以下代码,它应该找出一个日期与另一个日期之间的毫秒差异。它的目的是获取自打开 View 以来耗时:
this.timer.start = new Date();
this.timer.intervalRef = setInterval(() => {
this.timer.elapsedTime = moment(new Date()).diff(this.timer.start)
}, 1000);
然后,在模板中,它显示为:
{{ timer?.elapsedTime | date: 'hh:mm:ss' }}
它应该显示如下内容:
00:00:01
00:00:02
00:00:03
...
还有分秒部分,效果很好。但是“小时”部分总是从 1 开始,因此给我这个输出:
01:00:01
01:00:02
01:00:03
...
谁能解释我哪里出了问题,为什么会这样?
最佳答案
moment.diff
返回持续时间而不是 Date 对象。
您可以使用 .duration
并使用所需的输出进行格式化。
this.timer = {};
let start = moment(new Date());
let intervalRef = setInterval(() => {
let elapsedTime = moment(new Date()).diff(start)
let time = moment.duration(elapsedTime)
let hrs = ('0' + time.hours()).slice(-2);
let mins = ('0' + time.minutes()).slice(-2);
let secs = ('0' + time.seconds()).slice(-2);
this.timer.elapsedTime = `${hrs}:${mins}:${secs}`
console.log(this.timer.elapsedTime)
}, 1000);
<script src="https://momentjs.com/downloads/moment.js"></script>
关于javascript - Angular Date 管道,以及一个带有 Momentjs 的简单计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58135927/