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点以下。