一尘不染

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

javascript

我有两个输入日期来自Date Picker控件。我选择了开始日期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);
}

谁能告诉我如何获得确切的区别?


阅读 1378

收藏
2020-05-01

共1个答案

一尘不染

从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
2020-05-01