JavaScript:如何使用JavaScript计算两个date之间的天数

从Date Picker控件中取得两个inputdate。 我select了开始date2/2/2012和结束date2012年7月7日。 我已经写了下面的代码。

我应该得到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在“ends”处包含或排除(如注释中的@kotpalbuild议的那样)。
  2. 将第三个参数设置为true以获得一个浮点数diff,然后根据需要可以使用Math.floorMath.ceilMath.round
  3. 选项2也可以通过获得'seconds'而不是'days'然后除以24*60*60

尝试:

 //Difference in days var diff = Math.floor(( start - end ) / 86400000); alert(diff);