Sami A:
Estoy usando flatPickr (un plugin de calendario) para lograr esto. Estoy enviando MinDate y MaxDate, que siempre estén las domingos, al JavaScript de una función de PHP:
$("#weeklySelector").flatpickr(
{
inline: true,
enableTime: false,
dateFormat: "Y-m-d",
minDate: "<?php echo getSecondSunday($oldestDay[0], $newestDay[0]); ?>",
maxDate: "<?php echo getLastSunday($newestDay[0], getSecondSunday($oldestDay[0], $newestDay[0])); ?>",
defaultDate: "<?php echo getLastSunday($newestDay[0], getSecondSunday($oldestDay[0], $newestDay[0])); ?>",
enable: [
function(date) {
// Enable only the Sundays between the minDate and maxDate
// Include the minDate & maxDate because they both always will be Sundays
}
],
onChange: function(selectedDates, dateStr, instance) {
weeklyDate = dateStr;
},
});
En pseudo-código, la lógica es como la siguiente:
// minDate = "2020-04-05";
// maxDate = "2020-04-26";
enable: [
function(date) {
minDate, while(minDate+7 <= maxDate);
// Output: "2020-04-05", "2020-04-12", "2020-04-19", "2020-04-26"
}
],
Enlace a documentos: https://flatpickr.js.org/examples/#disabling-all-dates-except-select-few
Gabriele Petrioli:
Es necesario utilizar el .getDay()
método de la fecha, que devuelve el día de la semana ( 0 es Domingo ).
enable:[
function(date) {
return date.getDay() === 0; // 0 is sunday
}
]