Get Weeks In Month Through Javascript
Weeks start on Sunday
This ought to work even when February doesn't start on Sunday.
function weekCount(year, month_number) { // month_number is in the range 1..12 var firstOfMonth = new Date(year, month_number-1, 1); var lastOfMonth = new Date(year, month_number, 0); var used = firstOfMonth.getDay() + lastOfMonth.getDate(); return Math.ceil( used / 7);}
Weeks start on Monday
function weekCount(year, month_number) { // month_number is in the range 1..12 var firstOfMonth = new Date(year, month_number-1, 1); var lastOfMonth = new Date(year, month_number, 0); var used = firstOfMonth.getDay() + 6 + lastOfMonth.getDate(); return Math.ceil( used / 7);}
Weeks start another day
function weekCount(year, month_number, startDayOfWeek) { // month_number is in the range 1..12 // Get the first day of week week day (0: Sunday, 1: Monday, ...) var firstDayOfWeek = startDayOfWeek || 0; var firstOfMonth = new Date(year, month_number-1, 1); var lastOfMonth = new Date(year, month_number, 0); var numberOfDaysInMonth = lastOfMonth.getDate(); var firstWeekDay = (firstOfMonth.getDay() - firstDayOfWeek + 7) % 7; var used = firstWeekDay + numberOfDaysInMonth; return Math.ceil( used / 7);}
None of the solutions proposed here don't works correctly, so I wrote my own variant and it works for any cases.
Simple and working solution:
/** * Returns count of weeks for year and month * * @param {Number} year - full year (2016) * @param {Number} month_number - month_number is in the range 1..12 * @returns {number} */var weeksCount = function(year, month_number) { var firstOfMonth = new Date(year, month_number - 1, 1); var day = firstOfMonth.getDay() || 6; day = day === 1 ? 0 : day; if (day) { day-- } var diff = 7 - day; var lastOfMonth = new Date(year, month_number, 0); var lastDate = lastOfMonth.getDate(); if (lastOfMonth.getDay() === 1) { diff--; } var result = Math.ceil((lastDate - diff) / 7); return result + 1;};
you can try it here
This is very simple two line code. and i have tested 100%.
Date.prototype.getWeekOfMonth = function () { var firstDay = new Date(this.setDate(1)).getDay(); var totalDays = new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); return Math.ceil((firstDay + totalDays) / 7);}
How to use
var totalWeeks = new Date().getWeekOfMonth();console.log('Total Weeks in the Month are : + totalWeeks );