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,它可以減少小時 –