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

我的代码是这样的javascript:

$(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月16日晚上9点。 由于看来显示的日期是8月17日凌晨2点。 但我的代码是8月16日凌晨2点

我该如何解决?

我尝试更新这样的一天:

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

但它是一样的

实例化时,您必须将300分钟添加到DP mindate 。 由于此“时刻”是当前时间和日期,因此与添加它相关。

我和你的时区不一样,所以我不得不加上超过300分钟才能让它明天落下……但这是你最新的小提琴 。 我删除了所有.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