2つの日付間の差分を計算する

ネットを漁ると、秒数だけの差分や日数だけの差分が良くヒットするが

今回は、日数・時間・分・秒でそれぞれの差分が必要な場面に遭遇したので内容をメモ

javascriptで実装した

もっとスマートに書けないものか

// 現在時刻
var now = Date.now();
// この記事を書き始めた時刻
var targetDate = Date.parse('2017/03/27 23:46:00');
// 2つの日付の差分(ミリ秒)
var timeSpan = targetDate - now;
// 符号
var sign = Math.sign(timeSpan);

// 差分の絶対値
timeSpan = Math.abs(timeSpan);
// 何日何時間何分何秒離れているか計算
var day    = Math.floor(timeSpan / (1000 * 60 * 60 * 24));
var hour   = Math.floor(timeSpan / (1000 * 60 * 60)) - day * 24;
var minute = Math.floor(timeSpan / (1000 * 60)) - (day * 24 + hour) * 60;
var second = Math.floor(timeSpan / 1000) - ((day * 24 + hour) * 60 + minute) * 60;