2つの日時の時間差をJavaScriptで計算した時のメモ
以前 2つの日時の時間差を出したい という記事で時間と分を出すコード書きましたが、今回は秒まで出すコードを書きました。
やりたいこと
"2019/01/01 10:24:12"
から
"2019/01/02 21:35:51"
まで
「何時間」「何分」「何秒」時間差があるか計算してみる
結果は「35時間」「11分」「39秒」で
これをコードで実現してみる
コード.gs
function getTimeDiff() { var startDatetime = "2019/01/01 10:24:12"; var endDatetime = "2019/01/02 21:35:51"; var start = new Date(startDatetime); var end = new Date(endDatetime); var milsec = end - start; var milsecToSec = milsec / 1000; var secToMin = milsecToSec / 60; var minFloor = Math.floor(secToMin); var minFloorToHour = minFloor / 60; var remainMin = minFloor % 60; var hourFloor = Math.floor(minFloorToHour); var remain = secToMin - minFloor; var remainSec = remain * 60; var remainSecRound = Math.round(remainSec); Logger.log([[start, end], [hourFloor +"時間", remainMin + "分", remainSecRound + "秒"], [milsec, milsecToSec, secToMin, minFloor, minFloorToHour, hourFloor, remain, remainSec, remainSecRound]]); } |
意訳この機能がやること 開始日時 終了日時 開始日時をJavaScriptで扱えるミリ秒単位の時刻にする 終了日時をJavaScriptで扱えるミリ秒単位の時刻にする 終了日時ー開始日時で日時間の差を「ミリ秒」で表す 「ミリ秒」を「秒」で表す(余りなし) 「秒」を「分」で表す(余りあり) 「1分」に満たない「秒」を切り捨てた整数の「分」を取り出す(余りなし) 整数にした「分」を60で割って「時」で表す(余りあり) 「1時間」に満たない「分」を切り捨てた整数の「時」を取り出す(余りなし) 「1時間」に満たなかった余った「分」(minFloor / 60で割り切れずに残った整数) 「秒」を「分」で表した「分」から、整数の「分」を引いた残りの「分」(小数点) 小数点の「分」に60をかけて「秒」に戻す 戻した「秒」を四捨五入する(割り切れない数値は永遠に続くのでroundで四捨五入して整数にしてやる) start, endと時間、分、秒を出して、すべての変数の値もログに出してみる |
実行結果
getTimeDiff()を実行すると以下のようなログが出ます

関連記事