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
打败了时间戳和时区手动。
根据您的具体使用情况,您也可以
- 使用
a/b.startOf('day')
和/或a/b.endOf('day')
强制diff在“ends”处包含或排除(如注释中的@kotpalbuild议的那样)。 - 将第三个参数设置为
true
以获得一个浮点数diff,然后根据需要可以使用Math.floor
,Math.ceil
或Math.round
。 - 选项2也可以通过获得
'seconds'
而不是'days'
然后除以24*60*60
。
尝试:
//Difference in days var diff = Math.floor(( start - end ) / 86400000); alert(diff);