javascript - Angular Date 管道,以及一个带有 Momentjs 的简单计时器

标签 javascript angular momentjs

我有以下代码,它应该找出一个日期与另一个日期之间的毫秒差异。它的目的是获取自打开 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/

相关文章:

javascript - Angular2可点击表格行,最后一个单元格除外

javascript - 从语言环境日期字符串中获取时刻对象

javascript - 如何在使用库 react-cytoscape.js 进行一些拖动操作后重置为初始坐标

javascript - 如何使用 wp-blocks api 将原始 html 转换/解析为 wp gutenberg block ?

javascript - 提供嵌入内容的 JavaScript 链接

javascript - moment.js 给出了错误的日期

javascript - UTC 到 EST Moment.js

javascript - 使用两个分隔符分割

html - 如何使用 Bootstrap 导航栏和侧边栏? (组件重叠)

html - Typescript 获取 JSON 对象