Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2019年2月6日水曜日

2つの日時の時間差を出したい(秒も出す)


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()を実行すると以下のようなログが出ます



関連記事


Latest post

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...