我有两个输入日期来自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);
}
谁能告诉我如何获得确切的区别?
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
。
如果您正在使用moment.js,则可以轻松实现。
var start = moment("2018-03-10", "YYYY-MM-DD");
var end = moment("2018-03-15", "YYYY-MM-DD");
//Difference in number of days
moment.duration(start.diff(end)).asDays();
//Difference in number of weeks
moment.duration(start.diff(end)).asWeeks();
如果要查找给定日期与当前日期之间的天数差异(忽略时间),请确保如下所示从当前日期的矩对象中删除时间
moment().startOf('day')
查找给定日期和当前日期之间的天数差异
var given = moment("2018-03-10", "YYYY-MM-DD");
var current = moment().startOf('day');
//Difference in number of days
moment.duration(given.diff(current)).asDays();
尝试:
//Difference in days
var diff = Math.floor(( start - end ) / 86400000);
alert(diff);
试试这个使用moment.js(在JavaScript中计算日期操作相当容易)
firstDate.diff(secondDate,'days',false); // true | false为分数值
结果将为您提供整数天数。
这对我有用:
const from = '2019-01-01';
const to = '2019-01-08';
Math.abs(
moment(from, 'YYYY-MM-DD')
.startOf('day')
.diff(moment(to, 'YYYY-MM-DD').startOf('day'), 'days')
) + 1
);
您也可以使用以下代码:moment(“ yourDateHere”,“ YYYY-MM-DD”)。fromNow()。这将计算今天和您提供的日期之间的差额。
我使用Moment.js在ES6中做了一个快速可重用的功能。
const getDaysDiff = (start_date, end_date, date_format = 'YYYY-MM-DD') => {
const getDateAsArray = (date) => {
return moment(date.split(/\D+/), date_format);
}
return getDateAsArray(end_date).diff(getDateAsArray(start_date), 'days') + 1;
}
console.log(getDaysDiff('2019-10-01', '2019-10-30'));
console.log(getDaysDiff('2019/10/01', '2019/10/30'));
console.log(getDaysDiff('2019.10-01', '2019.10 30'));
console.log(getDaysDiff('2019 10 01', '2019 10 30'));
console.log(getDaysDiff('+++++2019!!/###10/$$01', '2019-10-30'));
console.log(getDaysDiff('2019-10-01-2019', '2019-10-30'));
console.log(getDaysDiff('10-01-2019', '10-30-2019', 'MM-DD-YYYY'));
console.log(getDaysDiff('10-01-2019', '10-30-2019'));
console.log(getDaysDiff('10-01-2019', '2019-10-30', 'MM-DD-YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
MVC我有两个输入文本1:天数2:日期时间选择器
@Html.TextBox("HeaderINVID", null, new { @id = "HeaderINVID", @type = "number", @class = "form-control", autocomplete = "off", placeholder = "Day Count " })
@Html.TextBox("HeaderINVDT", null, new { id = "HeaderINVDT", @class = "form-control format-picker", autocomplete = "off", placeholder = " Date" })
javascipt
从日期使用中计算数字
$("#HeaderINVID").bind("keyup", function (e) {
var INVID = $("#HeaderINVID").val();
var date = moment()
.add(INVID, 'd')
.toDate();
$("#HeaderINVDT").val(moment(date).format('YYYY-MM-DD')) ;
})
计算两个日期之间的天数
$("#HeaderINVDT").bind('change', function (e) {
var StDT = moment($("#HeaderINVDT").val()).startOf('day');
var NODT = moment().startOf('day');
$("#HeaderINVID").val(StDT.diff(NODT, 'days'));
})
不要忘记添加 http://momentjs.com/
本文地址:http://javascript.askforanswer.com/ruhejisuanlianggeriqizhijiandetianshu.html
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!