我有两个来自日期选择器控件的输入日期。我选择了开始日期 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
避免手动弄乱时间戳和时区。
根据您的具体用例,您可以
- 使用
a/b.startOf('day')
和/或a/b.endOf('day')
强制 diff 为包含或排除在“结束”处(正如@kotpal 在评论中所建议的那样)。 - 设置第三个参数
true
以获得浮点差异,然后您可以Math.floor
、Math.ceil
或Math .round
根据需要。 - 选项 2 也可以通过获取
'seconds'
而不是'days'
然后除以24*60*60
来实现。
关于javascript - 如何计算两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129928/