Угловая дата-труба и простой таймер с Momentjs - PullRequest
1 голос
/ 27 сентября 2019

У меня есть следующий код, который должен находить разницу в миллисекундах от одной даты к другой.Он предназначен для получения времени, прошедшего с момента открытия представления:

  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
...

Может кто-нибудь объяснить мне, в чем я ошибся и почему она работает так?

1 Ответ

1 голос
/ 27 сентября 2019

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>
...