简体   繁体   English

Diff 不是 Moment.js 中的函数

[英]Diff is not a function in Moment.js

I am selecting a date in the Air Datepicker and trying to compare today's date to the selected date to determine the difference in days.我正在 Air Datepicker 中选择一个日期并尝试将今天的日期与所选日期进行比较以确定天数差异。 So, for example, if today is 12/11/2016 and I select 12/20/2016, I want to get the difference, which is 9.因此,例如,如果今天是 12/11/2016 并且我选择 12/20/2016,我想得到差值,即 9。

I keep running into the following error: "end.diff is not a function".我不断遇到以下错误:“end.diff 不是函数”。

I've stripped the following code down to the essentials:我已将以下代码精简为要点:

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

Fiddle小提琴

https://jsfiddle.net/qn530dpq/ https://jsfiddle.net/qn530dpq/

The diff function is only available on moment objects. diff函数仅适用于矩对象。 Try this instead:试试这个:

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

the first argument of the onSelect function is the date as text - not a moment object. onSelect 函数的第一个参数是文本形式的日期 - 而不是 moment 对象。 Try to call the diff function on a moment object representing the selected date and it will work.尝试在表示所选日期的时刻对象上调用 diff 函数,它会起作用。 Also you'll have to specify the variable "end" which is probably your "fd".此外,您还必须指定变量“end”,这可能是您的“fd”。 Check it out: https://jsfiddle.net/t9suf65p/看看: 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);
        }
    });

You can use something like this:你可以使用这样的东西:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM