实际上,当日期在同月时,代码工作正常,但当日期在不同月份(例如 30/09/2015 和 01/10/2015)时,我遇到了问题,天数结果为 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)));
最佳答案
Date 方法从零开始计算月份,因此在设置日期时应从月份数中减去 1。这就解释了你的错误,因为你最终从 11 月 1 日减去 10 月 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])
关于javascript - 使用 Javascript 获取两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32787765/