私はこれに対する答えを見つけるためにかなり多くを探してきましたが、見つけることができませんでした。
2 つの日付があり、それらの間の日数を計算したい
しかし、私はまた、終了日を数えたいと思っています。
例 :
- 私と妻は [1 月 20 日] から [1 月 26 日] までホテルに行くので、合計 7 日間です。
私が見つけた唯一のコードは次のとおりです。
Math.round((b - a) / ( 1000 * 60 * 60 * 24)) +1
どこ :
var a= new Date (y,0,20);
var b= new Date (y,0,26);
また、ネストされたループを作成して、150 年以内のすべての月をテストしましたが、正常に動作します。
var y = 1970;
var m = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
for(var i = 0; i < 150; i++)
{
for(var j = 0; j < 12; j++)
{
var a = new Date(y + i, m[j], 20);
var b = new Date(y + i, m[j], 26);
var days = Math.round((b - a) / (1000 * 60 * 60 * 24)) + 1;
if(days != 7) console.log(i + y); //tell me if result is unexpected.
}
}
console.log('-FINISH-' + new Date().getTime())
では、どこに問題があるのでしょうか?
ここでのような数学関数がどのように機能するのかわかりませんround
。
ここではミリ秒について話していますが、ラウンド動作が正しい結果をもたらす場所がわかりません。
(ps - ceil と floor を忘れてください。ここでは役に立たず、一貫性のない結果が得られます)、b
値に 1 日を追加して、 ceil || を使用することも試みました。床に落ちたが成功しなかった