Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
193
rated 0 times [  200] [ 7]  / answers: 1 / hits: 60681  / 15 Years ago, sat, march 20, 2010, 12:00:00

In Javascript, how do I get the number of weeks in a month? I can't seem to find code for this anywhere.



I need this to be able to know how many rows I need for a given month.



To be more specific, I would like the number of weeks that have at least one day in the week (a week being defined as starting on Sunday and ending on Saturday).



So, for something like this, I would want to know it has 5 weeks:



S  M  T  W  R  F  S

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30 31


Thanks for all the help.


More From » calendar

 Answers
13

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

[#97287] Wednesday, March 17, 2010, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
neob

Total Points: 253
Total Questions: 106
Total Answers: 104

Location: Federated States of Micronesia
Member since Sun, May 16, 2021
3 Years ago
;