4
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2013, 06, 30);
var secondDate = new Date(2013, 07, 01);
var diffDays = Math.round(Math.abs((secondDate.getTime() - firstDate.getTime()) / (oneDay)));

上記のコードを実行すると、答えは 1 日になるはずです。しかし、それは私に2日を与えています。手伝って頂けますか?

4

2 に答える 2

4

これは、月が0JavaScript でインデックス化されるためです。最初のデートは 7 月、2 回目のデートは 8 月です。

1 か月が 31 日であるため、正しい差は 2 日です。

JavaScript でこの方法で日付を入力するときは、明示的にオフセットを追加して、他のコーダーが間違って読み取らないようにします。このエラーは簡単に発生します。

var firstDate = new Date(2013, 06 - 1, 30); // -1 due to the months being 0-indexed in JavaScript
var secondDate = new Date(2013, 07 - 1, 01);

はい、コードを「修正」していました...

于 2013-06-18T16:27:43.260 に答える