1

我编写JavaScript代码是这样的:在晚上9点如何在datetimepicker中添加基于小时的最短天数?

比如现在8月16日:

$(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'), 
    }); 
}); 

演示和完整的代码如下:https://jsfiddle.net/tyvetr5h/

我的问题。因为看起来显示的日期是8月17日凌晨2点。但我的代码是8月16日凌晨2点

我该如何解决?

我尝试更新的一天是这样的:

minDate: moment().startOf('day').add(300, 'm') 

但它同样

回答

1

你有太多实例时300分钟,增加了DP mindate。由于此“时刻”是当前的时间和日期,因此与添加它相关。

我和你不是一样的时区,所以我不得不增加300多分钟才能使它明天下降......但这里是你的updated Fiddle。我删除了所有.startOf(),我认为这与您尝试实现的内容无关。

编辑
我找到了诀窍。

的事情是,你改变力矩值...所以当它是时间比较的日期,更好地做好它的“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'), 
    }); 
}); 

CodePen

+0

Timepicker只能从现在选择的至少5小时。所以用户不能减少小时数。你的代码,用户仍然可以减少时间 –

+0

我不明白你的意思......在我发布的小提琴中,用户只能选择低于设定的最小值的日期/时间。 –

+0

如果第一次加载,然后选择timepicker,它的作品。用户不能减少小时数。但如果用户选择日期选择器,然后选择timepicker,它可以减少小时 –