2つの日付間の日数を計算する方法 質問する

2つの日付間の日数を計算する方法 質問する

Date Picker コントロールから取得した 2 つの入力日付があります。開始日を 2012/2/2、終了日を 2012/2/7 に選択しました。そのために次のコードを記述しました。

結果は 6 になるはずですが、5 が表示されます。

function SetDays(invoker) {   
    var start = $find('<%=StartWebDatePicker.ClientID%>').get_value();
    var end = $find('<%=EndWebDatePicker.ClientID%>').get_value();

    var oneDay=1000 * 60 * 60 * 24;
    var difference_ms = Math.abs(end.getTime() - start.getTime())
    var diffValue = Math.round(difference_ms / oneDay);
}

正確な差を出す方法を教えてもらえますか?

ベストアンサー1

http://momentjs.com/またはhttps://date-fns.org/

Moment ドキュメントより:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days')   // =1

または開始を含めるには:

a.diff(b, 'days')+1   // =2

タイムスタンプやタイムゾーンを手動で操作するよりも優れています。

具体的な使用例に応じて、

  1. a/b.startOf('day')and/orを使用してa/b.endOf('day')、差分が「両端」で包含的または排他的になるように強制します (コメントで @kotpal が提案しているとおり)。
  2. 3 番目の引数を設定すると、必要に応じて、またはtrue浮動小数点の差分を取得できます。Math.floorMath.ceilMath.round
  3. 'seconds'オプション 2 は、の代わりに を取得して'days'で割ることによっても実現できます24*60*60

おすすめ記事