JSFiddle - React, Tailwind, and code Playground
JavaScript
$(function(){
/**
* @param {int} month 0-11 based
* @param {int} year 4 digits based
* @returns {int} number of days
*/
function daysInMonth(month, year) {
return new Date(year, month + 1, 0).getDate(); //adding 1 month, and zero day will be the previous month's last day
}
/**
* @param {int} The month number, 0 based
* @param {int} The year, not zero based, required to account for leap years
* @return {Date[]} List with date objects for each day of the month
*/
function getDaysInMonth(month, year) {
var date = new Date(year, month, 1);
var days = [];
while (date.getMonth() === month) {
days.push(new Date(date));
date.setDate(date.getDate() + 1);
}
return days;
}
/**
* @param {int} currentMonth 0-11
* @param {int} currentYear 4 digit year
* @return {Date[]} List with date objects of previous other month
*/
function getDatePrevOtherMonth(currentMonth, currentYear) {
var indexCurrentFirstDay = new Date(currentYear, currentMonth, 1).getDay();
//console.log(indexCurrentFirstDay);
var pYear = "";
var pMonth = "";
var pDate = [];
if (currentMonth === 0) {
pYear = currentYear - 1;
pMonth = 11;
} else {
pMonth = currentMonth - 1;
pYear = currentYear;
}
var totalDaysOfPreviousMonth = daysInMonth(pMonth, pYear);
if (indexCurrentFirstDay > 0) {
var prevMonthDayStart = totalDaysOfPreviousMonth - (indexCurrentFirstDay - 1); //-1 to ensure inclusive day
// console.log(prevMonthDayStart);
for (var i = prevMonthDayStart; i <= totalDaysOfPreviousMonth; i++) {
pDate.push(new Date(pYear, pMonth, i));
//console.log(pYear + "-" + pMonth + "-" + i);
}
}
return pDate;
}
/**
*
* @param {int} currentMonth 0-11
...