Get Weeks In Month Through Javascript Get Weeks In Month Through Javascript javascript javascript

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 );