Diff不是Moment.js中的函数

我在Air Datepicker中选择了一个日期,并尝试将今天的日期与所选日期进行比较,以确定天数的差异。 所以,例如,如果今天是2016年11月12日,我选择12/20/2016,我想得到差异,即9。

我一直遇到以下错误:“end.diff不是函数”。

我已经将以下代码删除到了基本要素:

HTML

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/

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); } }); 

diff函数仅适用于时刻对象。 试试这个:

 var now = moment(new Date()), end = moment(fd), days = end.diff(now, 'days'); 

你可以使用这样的东西:

 $('#datepickerId').datepicker({ onSelect: function() { var date = $(this).datepicker('getDate'); var today = new Date(); var dayDiff = Math.ceil((today - date) / (1000 * 60 * 60 * 24)); } });