Based on recent requests i want to post this solution for getting the n’th given day of any month in any year.
For example the third Friday of current month:
<script type="text/javascript">
var myDay = getNthDayOfMonth(3,5,'','');
alert(myDay);
/*
Parameters:
index: n'th occurrence of the specified day
day: daynumber - javascript way where sunday is 0 and is saturday is 6
month: javascript way which is 0-11 [optional - defaults to current]
year: Full year - four digits [optional - defaults to current]
*/
function getNthDayOfMonth(index,day,month,year){
// Create date object
var date = new Date();
// Set to first day of month
date.setDate(1);
// If supplied - set the month
if(month!==''&&month!==undefined){
// Set month
date.setMonth(month);
}else{
month = date.getMonth();
}
// If supplied - set the year
if(year!==''&&year!==undefined){
// Set year
date.setFullYear(year);
}else{
year = date.getFullYear();
}
// Find daynumber
firstDay = date.getDay();
// Find first friday.
while(date.getDay()!=day){
date.setDate(date.getDate()+1) ;
}
switch(index){
case 2:
date.setDate(date.getDate()+7);
break;
case 3:
date.setDate(date.getDate()+14);
break;
case 4:
date.setDate(date.getDate()+21);
break;
case 5:
date.setDate(date.getDate()+28);
if(date.getMonth()!==month){
date = null;
}
break;
}
return date;
}
</script>
Alexander
Great job again. I did find that the returned value is more than the date. It returns
Day Mon date h:mm:ss EST YYYY
for me to use this is sharepoint I have to format the date to m/d/yyyy. I tried to format the myDay var but it did not work, so at the end of the function before return date; I added this line
This returns a date format that SP can use in it’s date field. Great job on both scripts.
thanks again
so now that I believe the output is formatted correctly m/d/yyyy, I cant seem to do much with the output. I need to get saturdays date also. Not always is the 3 friday going to proceed the 3 saturday. I thought adding one day to myDay would slove for this, but it is not.
I tried this:
[sourcecode]
var myDay2 = myDay.setDate(myDay.getDate() + 1);
Did I miss something in the date format, so the output is recognized as a date, or am I doing something wrong here adding a day to the output?
thanks!