使用Date.getTime()计算日期时出错

时间:2012-08-21 11:20:54

标签: javascript

我有这段代码:

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天。

我的错在哪里?

2 个答案:

答案 0 :(得分:1)

我认为使用Math.floor()代替Math.round()更有意义。 所以你应该这样做:

difDias = Math.floor((f_reg.getTime() - f_sal.getTime()) / unDia );

答案 1 :(得分:0)

好的,问题在于定义月份,因为它们基于零,所以现在我执行f_sal.getMonth() - 1,问题就解决了。