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

Error calculating dates with Date.getTime()

本文关键字:日期 出错 计算 Date getTime 使用      更新时间:2023-09-26

我有这样的代码:

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值为2012年6月9日,f_reg值为2012月7日,则difDias值为1天(正确)。但如果f_reg值为2012年10月6日,则difDias值为31天。。。正确的结果是30天。

我的错在哪里?

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

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

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