Webアプリを作成する中で、ユーザーが選択した時刻の差分を計算して表示することを実装しようとしたのですが、時間計算が簡単そうで、結構詰まったので、メモに残すことにしました。
やりたいこと
時間の差分を計算して、「00:00:00」のような感じにして表示したい
const NowTime = new Date();
const ChangeTime = new Date();
let TimeDefference = NowTime.getTime() - ChangeTime.getTime()
let Hour = TimeDefference / (1000 * 60 * 60);
//「時間」の部分を「Hour」に代入
let Minute = (Hour - Math.floor(Hour)) * 60;
//「分」の部分をMinuteに代入
let diffSecond = (Minute - Math.floor(Minute)) * 60;
TimeDefference = (('00' + Math.floor(Hour)).slice(-2) + ':' + ('00' + Math.floor(Minute)).slice(-2) + ':' + ('00' + Math.floor(Second)).slice(-2));
Math.floor
は数値の小数点以下の切り捨て処理を行う方法です。
.slice()
メソッドは文字列を切り分けるメソッドで、指定した引数の位置で文字列を切り分けることができます。
.slice(-2)
は右端から2番目の文字列だけを抽出することになり、"0021"
だと"21"
だけを抽出できます。
このままのコードだと動かないので、ChangeTime
には、ユーザーが選択した時刻を代入するような処理を書いてください。
また、入力した時刻が現在時刻と早いとうまくいかないので、この点の修正等も次の記事で書きたいと思います。
もっといい方法がありましたら、ご教示願います。
参考記事