Typescript とmoment.js で 毎秒更新されるClock を作成する

はじめに

Angular とchart.js でサンプルを作成している際に x軸として毎秒更新されるdate を生成したい時があります。
今回はJavascript のDate を利用する方法と moment.jsを利用する方法をまとめます。

stackblitz貼っておきます。
stackblitz.com

Javascript Date()

setInterval として 1000ms を指定しnew Date()this.time に毎秒上書くことで、最新の日時を表示することができます。

time = new Date();
timer: NodeJS.Timer;

this.timer = setInterval(() => this.time = new Date(), 1000);

moment.js

moment.js の場合でもsetInterval として 1000ms を指定し moment().format('MM/DD HH:mm:ss')this.momenttime へ毎秒上書きしています。

momenttime: string;
momenttimer: NodeJS.Timer;

this.momenttimer = setInterval(() => this.momenttime = moment().format('MM/DD HH:mm:ss'), 1000);

clearInterval

Angularを利用しているのでngOnDestroy にて clearInterval しています。
これを忘れると、ページを遷移しても裏で毎秒更新が走ってしまいます。

ngOnDestroy() {
  clearInterval(this.timer);
  clearInterval(this.momenttimer);
}

まとめ

Typescript / moment.js で 毎秒更新されるClock を作成することができました。