Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在datetimepicker中添加基于小时的最少天数?_Javascript_Jquery_Momentjs_Datetimepicker_Bootstrap Datetimepicker - Fatal编程技术网

Javascript 如何在datetimepicker中添加基于小时的最少天数?

Javascript 如何在datetimepicker中添加基于小时的最少天数?,javascript,jquery,momentjs,datetimepicker,bootstrap-datetimepicker,Javascript,Jquery,Momentjs,Datetimepicker,Bootstrap Datetimepicker,我的代码如下所示: $(function () { $('#datepicker').datetimepicker({ minDate: moment().startOf('day') }).on('dp.change', function(e){ if( e.date && e.date.isSame(moment(), 'd') ){ var min = moment().startOf('minute').add(300, 'm'

我的代码如下所示:

$(function () {    
  $('#datepicker').datetimepicker({
    minDate: moment().startOf('day')
  }).on('dp.change', function(e){
    if( e.date && e.date.isSame(moment(), 'd') ){
      var min = moment().startOf('minute').add(300, 'm');
      $('#timepicker').data("DateTimePicker").minDate(min);
    } else {
      $('#timepicker').data("DateTimePicker").minDate(false);
    }
  });

  $('#timepicker').datetimepicker({
    minDate: moment().startOf('minute').add(300, 'm'),
  });
});
minDate: moment().startOf('day').add(300, 'm')
演示和完整代码如下:

我的问题是:

例如现在8月16日晚上9点。显示的日期似乎是8月17日凌晨2点。但我的密码是8月16日凌晨2点

我怎样才能解决它

我尝试这样更新一天:

$(function () {    
  $('#datepicker').datetimepicker({
    minDate: moment().startOf('day')
  }).on('dp.change', function(e){
    if( e.date && e.date.isSame(moment(), 'd') ){
      var min = moment().startOf('minute').add(300, 'm');
      $('#timepicker').data("DateTimePicker").minDate(min);
    } else {
      $('#timepicker').data("DateTimePicker").minDate(false);
    }
  });

  $('#timepicker').datetimepicker({
    minDate: moment().startOf('minute').add(300, 'm'),
  });
});
minDate: moment().startOf('day').add(300, 'm')

但这是一样的

在实例化时,您也必须将300分钟添加到DP
mindate
。因为这个“时刻”是当前的时间和日期,所以添加它是相关的

我和你不在同一个时区,所以我不得不加上300多分钟,让它落在明天。。。但这是你的建议。我删除了所有我认为与你试图实现的目标无关的东西

编辑
我找到了窍门

问题是你改变了力矩值。。。因此,当需要比较日期时,最好使用“Unix格式”,即从1970年1月1日起以毫秒为单位

那个长整数不关心日的变化。因此,如果从现在算起,时间是300分钟,那么比较起来就更容易了(而且也不会出错)

$(function () {

  console.clear();

  $('#datepicker').datetimepicker({
    minDate: moment().add(300, 'm').startOf("day")
  })
    .val(moment().add(300, 'm').format("DD-MM-YYYY"))   // To set correct "valid" date from start

    .on('dp.change', function(e){
    var now = moment().format("X");
    //console.log(e.date.format("X"));
    //console.log(now);

    // Comparing selected date (moment object) in milliseconds
    if(e.date.format("X")+(300*60*1000) > now ){
      console.log("above 5 hours, unlocking time.");
      $('#timepicker').data("DateTimePicker").minDate(false);
    }else{
      console.log("below 5 hours, locking time (and probably resetting the value to min...)");
      $('#timepicker').data("DateTimePicker").minDate(moment().add(300, 'm'));
    }

  });

  $('#timepicker').datetimepicker({
    minDate: moment().add(300, 'm'),
  });
});

从现在起至少5小时后才能选择时间选择器。所以用户不能减少小时数。你的代码,用户仍然可以减少小时我不明白你的意思。。。在我发布的提琴中,用户无法选择低于设定的最小值的日期/时间。如果先加载,然后选择时间选择器,则可以工作。用户不能减少小时数。但是如果用户选择datepicker然后选择timepicker,它可以减少小时如果上面的日期不是今天,用户可以减少小时。。。如果用户减少了时间,他就不能选择今天。。。所以没问题,我是说像这样。如果现在是凌晨3点。那么用户从现在起只能选择5小时以上。因此,用户只能在上午8点进行选择。用户不能将时间选择器减至上午7点或8点以下。