Diff 不是 Moment.js 中的函数
Posted
技术标签:
【中文标题】Diff 不是 Moment.js 中的函数【英文标题】:Diff is not a function in Moment.js 【发布时间】:2017-04-26 20:54:24 【问题描述】:我在 Air Datepicker 中选择一个日期,并尝试将今天的日期与所选日期进行比较以确定天数的差异。因此,例如,如果今天是 2016 年 12 月 11 日,我选择 12/20/2016,我想得到差值,即 9。
我一直遇到以下错误:“end.diff 不是函数”。
我已将以下代码简化为基本要素:
HTML
<form>
<input id="datereq" name="datereq" type="text" class="dateReq" value="" />
</form>
<div id="selected"></div>
JQUERY
var date = new Date(),
disabledDays = [0, 6];
$('.dateReq').datepicker(
dateFormat: 'mm/dd/yyyy',
minDate: new Date(),
language: 'en',
autoClose: true,
onRenderCell: function(date, cellType)
if (cellType == 'day')
var day = date.getDay(),
isDisabled = disabledDays.indexOf(day) != -1;
return
disabled: isDisabled
;
,
// Display Appropriate Order Type Options
onSelect: function onSelect(fd, date)
var now = moment(new Date()).format('MM/DD/YYYY'),
end = fd,
days = end.diff(now, 'days');
$('#selected').html('now:' + now + 'end:' + end + 'diff:' + days);
//console.log('end:' + end);
//console.log('diff:' + days);
);
小提琴
https://jsfiddle.net/qn530dpq/
【问题讨论】:
当你添加.format()
时,diff 不会将它视为时刻 obj。
【参考方案1】:
onSelect 函数的第一个参数是文本形式的日期 - 不是时刻对象。 尝试在代表所选日期的时刻对象上调用 diff 函数,它将起作用。此外,您还必须指定变量“end”,这可能是您的“fd”。 看看吧:https://jsfiddle.net/t9suf65p/
// Initialize Datepicker
var date = new Date(),
disabledDays = [0, 6];
$('.dateReq').datepicker(
dateFormat: 'mm/dd/yyyy',
minDate: new Date(),
language: 'en',
autoClose: true,
onRenderCell: function (date, cellType)
if (cellType == 'day')
var day = date.getDay(),
isDisabled = disabledDays.indexOf(day) != -1;
return
disabled: isDisabled
;
,
// Display Appropriate Order Type Options
onSelect: function onSelect(fd, date)
var selectedDate = moment(fd, 'MM/DD/YYYY');
var now = moment(new Date());
var days = selectedDate.diff(now, 'days');
$('#selected').html('now: ' + now.format('MM/DD/YYYY') + 'end: ' + selectedDate.format('MM/DD/YYYY') + ' diff: ' + days);
//console.log('end:' + end);
//console.log('diff:' + days);
);
【讨论】:
这是对我的问题最完整/彻底的解决方案。谢谢!【参考方案2】:diff
函数仅适用于矩对象。
试试这个:
var now = moment(new Date()),
end = moment(fd),
days = end.diff(now, 'days');
【讨论】:
【参考方案3】:你可以这样使用:
$('#datepickerId').datepicker(
onSelect: function()
var date = $(this).datepicker('getDate');
var today = new Date();
var dayDiff = Math.ceil((today - date) / (1000 * 60 * 60 * 24));
);
【讨论】:
他正在寻找使用 momentjs 的答案。 OP专门询问momentjs以上是关于Diff 不是 Moment.js 中的函数的主要内容,如果未能解决你的问题,请参考以下文章