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 回答