1. ホーム
  2. javascript

[解決済み] JavaScriptで2つのDateの差を求めるには?

2022-09-04 03:48:33

質問

時間枠のあるイベントを定義できるアプリケーションを作成しています。 ユーザーが開始日を選択または変更すると、終了日が自動的に入力されるようにしたいと思っています。 しかし、2 つの時間の差を取得する方法、およびその差を使用して新しい終了日を作成する方法がよくわかりません。

どのように解決するのですか?

JavaScriptでは、日付はエポックからのミリ秒数に変換することができます。 getTime() メソッド または は数値表現で日付を使うだけです。

つまり、差を求めるには、2つの日付を引き算すればいいわけです。

差分に基づいて新しい日付を作成するには、コンストラクタでミリ秒数を渡せばよいのです。

var oldBegin = ...
var oldEnd = ...
var newBegin = ...

var newEnd = new Date(newBegin + oldEnd - oldBegin);

これはちょうど動作するはずです

編集 : bdukes さんからご指摘いただいたバグを修正しました。

EDIT :

動作の説明のために oldBegin , oldEnd そして newBeginDate のインスタンスになります。演算子を呼び出す +- は、Javascript のオートキャストをトリガーして、自動的に valueOf() のプロトタイプメソッドを自動的に呼び出します。このとき valueOf() メソッドが実装されているのは Date オブジェクトの呼び出しとして getTime() .

ですから、基本的には date.getTime() === date.valueOf() === (0 + date) === (+date)