Reputation: 4979
I have some JS code which stacks div's that are representing days in a month in a larger div that is actually a calendar. Users can freely select a month and year. I need to build a calendar for that month.
For example: if this month is starting with Saturday then I need to first build 5 empty blocks and then start filling the calendar with blocks that have a number of day inside them.
How can I calculate this number for the given input of month and year?
Upvotes: 9
Views: 12720
Reputation: 16561
You can get the day of the week by using the getDay function of the Date object.
To get the first of the month create a new Date object:
var year = "2012";
var month = "12";
var day = new Date(year + "-" + month + "-01").getDay();
// 6 - Saturday
console.log(day);
Since you count from 1 and Monday is the first day of the week you'll also have to do this:
day = (day===0) ? 7 : day
Upvotes: 23
Reputation: 11
ES6 way:
const firstDayInMonthIndex = (
monthIndex = new Date().getMonth(),
year = new Date().getFullYear()
) => (
new Date(`${year}-${monthIndex + 1}-01`).getDay()
)
Upvotes: 1