時間まで取得した場合に09:00:00からカウントが始まる

Date.now()はUTCが基準、getHours()などはローカルタイムが基準となります。
2020年4月23日
ユーザー

動画では、経過時間を分単位までですが、時間まで表記させたいと思い、

const h = String(d.getHours()).padStart(2,'0');

を追加し

timer.textContent = `${h}:${m}:${s}.${ms}`;

としました。

スタートすると09:00:00:00 からカウントが始まり、タイムゾーンの問題かと思い、無理やり

const h = String(d.getUTCHours()).padStart(2,'0');

にしたところ見た目には問題ない感じがしました。

しかし、

startTime = Date.now(); でstartTimeとDate.now()

が同じ値になっていると思ったのですが、

const d =new Date(Date.now() - startTime + elapsedTime);

上の式で時差が出てしまう事がうまく腑に落ちません。

そもそも私の考え方が間違っているようにも思います。

この回答を見るにはプレミアムサービスへの登録が必要です

プレミアムサービスとは?