1. ホーム
  2. javascript

[解決済み] Javascriptでタイムスパンを扱う

2022-02-10 05:18:20

質問

Date.jsをすでに使用していますが、必要であれば他のライブラリも使用可能です。

時間差分を処理する最良の方法は何かわかりません。具体的には、現在と過去の日付時刻の間の経過時間を表示したいのです。

そこで、次のようなことをしたいのです。

var elapsed_time = new Date() - pastDate;
pastDate.toString('days-hours-minutes-seconds');

Date.jsを使用してほぼ動作するようになりましたが、問題はタイムスパンではなくDateオブジェクトを使用しているため、23時間のタイムスパンのはずが、Dateの最初の時刻から23時間後になっていることです。

var result = (new Date()) - past_date;
result" は数字(おそらくミリ秒)です:15452732

var result = (新しい日付() - past_date)
"result"は1969年からの日付です。1969年12月31日(水)23:17:32

私が必要としているのは

0日23時間17分32秒

何か思い当たることは?

解決方法は?

が必要なようです。 moment.js

たとえば

moment().subtract('days', 6).calendar();

=> 最終日曜日の午後8時23分に

moment().startOf('hour').fromNow();

=> 26分前

編集する。

純粋なJSの日付差分計算。

var date1 = new Date("7/Nov/2012 20:30:00");
var date2 = new Date("20/Nov/2012 19:15:00");

var diff = date2.getTime() - date1.getTime();

var days = Math.floor(diff / (1000 * 60 * 60 * 24));
diff -=  days * (1000 * 60 * 60 * 24);

var hours = Math.floor(diff / (1000 * 60 * 60));
diff -= hours * (1000 * 60 * 60);

var mins = Math.floor(diff / (1000 * 60));
diff -= mins * (1000 * 60);

var seconds = Math.floor(diff / (1000));
diff -= seconds * (1000);

document.write(days + " days, " + hours + " hours, " + mins + " minutes, " + seconds + " seconds");