使用Javascript获取两个日期之间的天数

时间:2015-09-25 17:39:01

标签: javascript date

实际上,当日期是在同一个月时,代码正常工作,但是当日期在2015年9月30日和2015年10月1日的不同月份时,我遇到了问题,结果天数是2。(抱歉我的英语不好)

以下是示例代码:

var dtElem1 = '30/09/2015';
var dtElem2 = '01/10/2015';
var resultElem = frm.elements['numberofdays'];
var oneDay = 24*60*60*1000;

var x = dtElem1.value;
var y = dtElem2.value;
var arr1 = x.split('/');
var arr2 = y.split('/');

var dt1 = new Date();
dt1.setFullYear(arr1[2], arr1[1], arr1[0]);
var dt2 = new Date(); 
dt2.setFullYear(arr2[2], arr2[1], arr2[0]);

resultElem.value = Math.round(Math.abs((dt1.getTime() -
  dt2.getTime())/(oneDay)));

1 个答案:

答案 0 :(得分:2)

日期方法从零开始计算月数,因此在设置日期时应从月份数中减去1。这解释了你的错误,因为你最终从 11月的第1天减去了 october 的第30个,而10月有31天。

这将给出预期的结果:

dt1.setFullYear(arr1[2], arr1[1] - 1, arr1[0])
dt2.setFullYear(arr2[2], arr2[1] - 1, arr2[0])

请注意,您无需创建日期,然后进行设置。您可以将相同的参数直接传递给构造函数:

dt1 = new Date(arr1[2], arr1[1] - 1, arr1[0])
dt2 = new Date(arr2[2], arr2[1] - 1, arr2[0])