javascript - 如何计算两个日期之间的天数

标签 javascript

我有两个来自日期选择器控件的输入日期。我选择了开始日期 2/2/2012 和结束日期 2/7/2012。我为此编写了以下代码。

我应该得到 6 的结果,但我得到 5。

function SetDays(invoker) {   
    var start = $find('<%=StartWebDatePicker.ClientID%>').get_value();
    var end = $find('<%=EndWebDatePicker.ClientID%>').get_value();

    var oneDay=1000 * 60 * 60 * 24;
    var difference_ms = Math.abs(end.getTime() - start.getTime())
    var diffValue = Math.round(difference_ms / oneDay);
}

谁能告诉我怎样才能得到确切的区别?

最佳答案

http://momentjs.com/https://date-fns.org/

来自 Moment 文档:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days')   // =1

或包括开头:

a.diff(b, 'days')+1   // =2

避免手动弄乱时间戳和时区。

根据您的具体用例,您可以

  1. 使用 a/b.startOf('day') 和/或 a/b.endOf('day') 强制 diff 为包含或排除在“结束”处(正如@kotpal 在评论中所建议的那样)。
  2. 设置第三个参数 true 以获得浮点差异,然后您可以 Math.floorMath.ceilMath .round 根据需要。
  3. 选项 2 也可以通过获取 'seconds' 而不是 'days' 然后除以 24*60*60 来实现。

关于javascript - 如何计算两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129928/

相关文章:

javascript - “箭头功能”和“功能”是否等效/可互换?

javascript - 无法在 bootstrap Modal 中显示 div

javascript - HTML 按钮 onclick 函数无法使用 jQuery 变量作为参数

javascript - 如何从后面的代码设置新窗口的高度和宽度

javascript - 鼠标悬停时工具提示未正确显示

javascript - 我在 IE8 中不断收到 Object.create 错误

javascript - 在 jquery 中隐藏一个 div

javascript - 每次插入数据库时​​自动递增 `trackingcode` 列

javascript - Twitter 嵌入时间线消失

javascript - MVC 4 APIController 不接收 POST 数据