I know this is coming late, I have seen codes upon codes trying to get the number of weeks a particular month falls on, but many have not been really precise but most have been really informative and reusable, I'm not an expert programmer but I can really think and thanks to some codes by some people I was able to arrive at a conclusion.
function convertDate(date) {//i lost the guy who owns this code lol var yyyy = date.getFullYear().toString(); var mm = (date.getMonth()+1).toString(); var dd = date.getDate().toString(); var mmChars = mm.split(''); var ddChars = dd.split(''); return yyyy + '-' + (mmChars[1]?mm:"0"+mmChars[0]) + '-' + (ddChars[1]?dd:"0"+ddChars[0]); } //this line of code from https://stackoverflow.com/a/4028614/2540911 var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; var myDate = new Date('2019-03-2'); //var myDate = new Date(); //or todays date var c = convertDate(myDate).split("-"); let yr = c[0], mth = c[1], dy = c[2]; weekCount(yr, mth, dy) //Ahh yes, this line of code is from Natim Up there, incredible work, https://stackoverflow.com/a/2485172/2540911 function weekCount(year, month_number, startDayOfWeek) { // month_number is in the range 1..12 console.log(weekNumber); // 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 first = firstOfMonth.getDate(); //initialize first week let weekNumber = 1; while(first-1 < numberOfDaysInMonth){ // add a day firstOfMonth = firstOfMonth.setDate(firstOfMonth.getDate() + 1);//this line of code from https://stackoverflow.com/a/9989458/2540911 if(days[firstOfMonth.getDay()] === "Sunday"){//get new week every new sunday according the local date format //get newWeek weekNumber++; } if(weekNumber === 3 && days[firstOfMonth.getDay()] === "Friday") alert(firstOfMonth); first++ } }
I needed this code to generate a schedule or event scheduler for a church on every 3rd friday of a new month, so you can modify this to suit your or just pick your specific date, not "friday and specify the week of the month and Voila!! here you go