208

2 つの日付の差を秒単位で取得しようとしています。ロジックは次のようになります。

  • 今になる最初の日付を設定します。
  • 最初の日付に将来の数秒を加えた最終日付を設定します(たとえば、15としましょう)
  • これら2つの差を取得します(秒数)

私が日付でそれを行っている理由は、最終的な日付/時刻が他の変数に依存し、決して同じではないためです (ユーザーが何かを行う速度に依存します)。

私はこのようなことを試みてきました:

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

問題は、私が正しい違いを得ることは決してないということです. で割ってみ24 * 60ましたが、秒が残りますが、うまくいきません。では、私のロジックの何が問題なのですか? かなり遅いので、愚かな間違いを犯している可能性がありますが、それを機能させることができないのは気になります:)

4

8 に答える 8

411

コード

var startDate = new Date();
// Do your operations
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;

(endDate - startDate) / 1000または、タイプスクリプトを使用していない限り、コメントで指摘されているようにさらに簡単です。


説明

getTime()オブジェクトのメソッドを呼び出す必要がありDate、単純にそれらを減算して 1000 で除算します (元はミリ秒単位であるため)。さらに、メソッドを呼び出すと、実際には、メソッドgetDate()の呼び出しから得られるエポック時間とは対照的に、1 から 31 までの整数 (ゼロベースではない) として月の日が得られます。 1970 年 1 月 1 日 00:00getTime()からのミリ秒数を表す


暴言

日付関連の操作が何であるかによっては、 date.jsmoment.jsなどのライブラリを統合することに投資したいと思うかもしれません。これにより、開発者にとって物事がはるかに簡単になりますが、それは個人的な好みの問題です。

たとえば、moment.js ではmoment1.diff(moment2, "seconds")、どちらが美しいかを示します。


この回答に役立つドキュメント

于 2012-12-15T17:51:56.357 に答える
5

正確かつ高速で、数秒で出力が得られます。

 let startDate = new Date()
 let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
 let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);
于 2021-01-28T07:05:42.680 に答える
3

以下のコードは、時差を秒単位で示します。

var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second

alert(timeDiffInSecond );
于 2018-06-27T07:43:03.947 に答える