1. ホーム
  2. ジャバスクリプト

[解決済み】2つの日付の時差を秒単位で取得する

2022-04-17 16:12:20

質問

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 秒単位で計算できるのですが、うまくいきません。私のロジックのどこが悪いのでしょうか?今更なので、何か馬鹿な間違いをしてるのかもしれませんが、うまくいかないのが悩みの種です :)

解決方法は?

コード

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

あるいはもっとシンプルに (endDate - startDate) / 1000 typescriptを使用していない限り、コメントで指摘されている通りです。


説明

を呼び出す必要があります。 getTime() メソッドで Date オブジェクトを作成し、それを単純に引き算して1000で割ります(元々ミリ秒単位なので)。おまけに getDate() メソッドで得られるエポックタイムとは対照的に、実際には 1 から 31 までの整数値 (ゼロベースではない) でその月の日数を取得しています。 getTime() メソッドから何ミリ秒経ったかを表しています。 1970年1月1日午前0時00分


暴言

日付に関する操作の内容によっては、以下のようなライブラリの統合に投資したほうがいいかもしれません。 日付.js または モーメント.js を作るものです。 とても簡単 しかし、これは個人の好みの問題です。

例えば moment.js を実行します。 moment1.diff(moment2, "seconds") というのは、美しいですね。


この回答に対する有用なドキュメント