Jquery 引导DateTimePicker-禁用现在之前的日期和时间(当前时间)

Jquery 引导DateTimePicker-禁用现在之前的日期和时间(当前时间),jquery,datetimepicker,bootstrap-datetimepicker,Jquery,Datetimepicker,Bootstrap Datetimepicker,我正试图用这个日期选择器解决一些非常奇怪的问题。 这是我的密码 $("#dep-date").datetimepicker({ // From-date timepicker: true, closeOnDateSelect: false, closeOnTimeSelect: true, initTime: true, minDate: 0, roundTime: 'ceil', onChangeDateTime: function (s

我正试图用这个日期选择器解决一些非常奇怪的问题。 这是我的密码

$("#dep-date").datetimepicker({ // From-date
    timepicker: true,
    closeOnDateSelect: false,
    closeOnTimeSelect: true,
    initTime: true,
    minDate: 0,
    roundTime: 'ceil',
    onChangeDateTime: function (selectedDate) {
        if (selectedDate != null) {
            $("#ret-date").datetimepicker({           //set 'to' mindate as selected
                minDate: new Date(selectedDate),
            });
            startDate = $("#dep-date").val();
        }
    },
    onClose: function () {
        $("#ret-date").focus();
    }
});
$("#ret-date").datetimepicker({ // TO-date
    timepicker: true,
    closeOnDateSelect: false,
    closeOnTimeSelect: true,
    initTime: true,
    minDate: 0,
    onClose: function (selectedDate) {
        if (selectedDate != null) {
            var endDate = $("#ret-date").val();
            if (startDate > endDate) {
                $("#err").css("display", "block");
                $("#ret-date").val('');
            } else {
                $("#err").css("display", "none");
                $("#dep-date").datetimepicker({
                    maxDate: new Date(selectedDate)   //set 'from' maxdate as selected
                });
            }
        }
    }
});

如何在此代码中设置
minTime
属性?我想要实现的是,只有在当天,当前时间之前的时间才应该被禁用。但是,对于剩余的几天,应再次启用所有时间。因此,我不能使用
禁用小时
。有什么想法吗?

这当然是可能的,尽管实现起来有点困难

您需要做的是将
minDate
参数初始化为当天午夜。然后,将事件侦听器绑定到
dp.change
事件,并拒绝任何早于当前时间的时间。 拒绝此时间时,通知用户并将DateTimePicker时间重置为当前时间。我创建了一个函数来执行此操作:

// Argument obj is the used DateTimePicker object
// Argument f is the selected datetime by the user
// Argument n is the current datetime
var checkDate = function (obj, f, n) {
    if (f.getTime() < n.getTime()+60*1000 && !open) {
        open = true;
        $('#message').dialog({
            modal: true,
            position: ['center', 'center'],
            show: 'blind',
            hide: 'blind',
            width: 400,
            dialogClass: 'ui-dialog-osx',
            buttons: {
                "I understand. Let me try again": function () {
                    $(this).dialog("close");
                    obj.data('DateTimePicker').setDate(n);
                    open = false;
                }
            }
        });
    }
}
这将产生您想要的结果:

您可以在我为您准备的JSFIDLE中找到完整的代码:


您还可以禁用日期数组

Date.prototype.addDays = function(days) {
    var dat = new Date(this.valueOf())
    dat.setDate(dat.getDate() + days);
    return dat;
}

function getDates(startDate, stopDate) {
    var dateArray = new Array();
    var currentDate = startDate;
    while (currentDate <= stopDate) {
        dateArray.push( new Date (currentDate) )
        currentDate = currentDate.addDays(1);
    }
    console.dir(dateArray)
    return dateArray;
}



  to = new Date();
  d = new Date(); 
  x = 96; 
  d.setDate(d.getDate() - x);
  disabledDates= getDates(d,to);


$('#foo').datetimepicker({
    disabledDates:disabledDates,
    format: 'DD.MM.Y',
    viewMode: 'days'
  });
Date.prototype.addDays=函数(天){
var dat=新日期(this.valueOf())
dat.setDate(dat.getDate()+天);
返回数据;
}
函数getDates(startDate、stopDate){
var dateArray=新数组();
var currentDate=起始日期;

while(currentDate)运行时代码输出了什么?您从未解释过。问题本身不知道如何使输出仅适用于当前日期时间mintime应适用于剩余天数不应。例如:2015/07/14 16:30(今天)如果我需要选择2015/07/15 02:30,则当前时间是否在16:30之前全部禁用?02:30表示将禁用该时间,因此除当前日期外,应启用剩余天数。
Date.prototype.addDays = function(days) {
    var dat = new Date(this.valueOf())
    dat.setDate(dat.getDate() + days);
    return dat;
}

function getDates(startDate, stopDate) {
    var dateArray = new Array();
    var currentDate = startDate;
    while (currentDate <= stopDate) {
        dateArray.push( new Date (currentDate) )
        currentDate = currentDate.addDays(1);
    }
    console.dir(dateArray)
    return dateArray;
}



  to = new Date();
  d = new Date(); 
  x = 96; 
  d.setDate(d.getDate() - x);
  disabledDates= getDates(d,to);


$('#foo').datetimepicker({
    disabledDates:disabledDates,
    format: 'DD.MM.Y',
    viewMode: 'days'
  });