0

私はこのコードを持っています:

f_sal = new Date( f_sal.getFullYear(), f_sal.getMonth(), f_sal.getDate() ); 
f_reg = new Date( f_reg.getFullYear(), f_reg.getMonth(), f_reg.getDate() ); 

var unDia = 1000 * 60 * 60 * 24;
difDias = Math.round((f_reg.getTime() - f_sal.getTime()) / unDia );

f_sal 値が 6/9/2012 で f_reg 値が 7/9/2012 の場合、difDias 値は 1 日 (正しい) です。しかし、f_reg 値が 6/10/2012 の場合、difDias 値は 31 日です... 正しい結果は 30 日になります。

私のせいはどこですか?

4

2 に答える 2

1

Math.floor()の代わりに使う方が理にかなっていると思いますMath.round()。したがって、次のことを行う必要があります。

difDias = Math.floor((f_reg.getTime() - f_sal.getTime()) / unDia );
于 2012-08-21T11:27:42.067 に答える
0

わかりました、問題は月の定義でした。月はゼロベースであるため、f_sal.getMonth() - 1 を実行すると、問題は解決しました。

于 2012-08-21T14:18:03.690 に答える