Estoy usando jQuery Datepicker y tengo el mismo cambio en jQuery pero algo salió mal en esto.
Todo funciona bien como mi requisito, pero cuando selecciono la fecha de December 2020 en la fecha de inicio, todas las fechas de finalización están deshabilitadas.
Y esto sucede solo cuando selecciono las fechas de diciembre de 2020.
if (jQuery('#datetimepicker1').length > 0) { jQuery('#datetimepicker1').datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', maxDate: 0, onChangeDateTime: function(dp, $input) { var from = $input.val().split("/"); var f = new Date(from[2], from[1], from[0]); f.setDate(f.getDate()); var datemin = f.getFullYear()+ "/" +f.getMonth()+ "/" +f.getDate(); var datestr= from[2]+ "/" +f.getMonth()+ "/" +from[0]; $("#datetimepicker2").datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', changeMonth: f.getMonth(), changeYear: f.getFullYear(), minDate: new Date(datemin), startDate:datemin, }); } }); } if (jQuery('#datetimepicker2').length > 0) { jQuery('#datetimepicker2').datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', maxDate: 0, }); } <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <input id="datetimepicker1" type="text" placeholder="Start Date"/> <input id="datetimepicker2" type="text" placeholder="End Date"/>Los meses de Javascript están basados en 0 , pero su entrada está basada en 1 , por lo que necesita convertir
var f = new Date(from[2], from[1]-1, from[0]);Falla porque no hay mes 13, por lo que se "confunde".
Como no está utilizando la fecha en sí, sino que está volviendo a formatear a una cadena, también debe volver a convertir en esas líneas:
var datemin = f.getFullYear()+ "/" +(f.getMonth()+1)+ "/" +f.getDate(); var datestr= from[2]+ "/" +(f.getMonth()+1)+ "/" +from[0]; if (jQuery('#datetimepicker1').length > 0) { jQuery('#datetimepicker1').datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', maxDate: 0, onChangeDateTime: function(dp, $input) { var from = $input.val().split("/"); var f = new Date(from[2], from[1]-1, from[0]); f.setDate(f.getDate()); var datemin = f.getFullYear()+ "/" +(f.getMonth()+1)+ "/" +f.getDate(); var datestr= from[2]+ "/" +(f.getMonth()+1)+ "/" +from[0]; $("#datetimepicker2").datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', changeMonth: f.getMonth(), changeYear: f.getFullYear(), minDate: new Date(datemin), startDate:datemin, }); } }); } if (jQuery('#datetimepicker2').length > 0) { jQuery('#datetimepicker2').datetimepicker({ lang: 'ch', timepicker: false, format: 'd/m/Y', formatDate: 'Y/m/d', maxDate: 0, }); } <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <input id="datetimepicker1" type="text" placeholder="Start Date"/> <input id="datetimepicker2" type="text" placeholder="End Date"/>