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

标签 javascript date

实际上,当日期在同月时,代码工作正常,但当日期在不同月份(例如 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/

相关文章:

javascript - 使用 jquery 观察 html body

javascript - 由于 lambda 表达式,缩小失败

swift - 按日期排序 HealthKit 数据

date - jQuery dataTables 排序不适用于 dd-mm-yyyy 格式

mysql - 比较 SQL 中的日期大小写

hibernate - HQL 中的日期操作

javascript - 添加jquery后Html提交按钮不起作用

javascript - req.user 和 Is Authenticated 始终为 false

javascript - 如何在javascript中分解一个url

ruby-on-rails - 自 postgresql/rails 中某个日期以来的平均天数