# DATEADD() Function To Find Closest Day Of Week, One Month Later.

Hey Experts,

I have a date challenge.  I'm writing an ASP application that uses dateadd() to get the date of the next month and that is fine.  I use this:

My issue is that I need the nextmonth value to be on the same day of the week as the starting date, for example, today is Thursday, 8/5/2004, the above function returns Saturday, 9/5/2004.  I really need to calculate the closest Thursday to the nextmonth value which would be 9/2/2004.

I hope that someone has solved this issue and can be of help.

Thanks,
Glen
###### Who is Participating?

Commented:
Hello

Try this

======================================================
<%
currDate = "05-Aug-04"
currDay = WeekDay(currDate)

nextDay = WeekDay(nextDate)

if nextDay >= currDay Then
Else
End if
%>
=====================================================

neeraj523
0

Commented:

0

Commented:
That will work for 4 week months but what about 5 week months?

<%
datetocheck=date
response.write getFriday(datetocheck,weekday(datetocheck))

function getFriday(strdate,daytofind)
tmpdate= year(olddate) & "/" & month(olddate) & "/" & "1"
for count=1 to 7
if daytofind=weekday(tmpdate) then exit for
next
getFriday=formatdatetime(tmpdate,1)
end function
%>
0

Author Commented:
You are right Gary.

I have been using:

The application is working with the recurrence patterns in the Outlook Calendar.  I'm not sure that each monthly recurrence is exactly 4 weeks apart.  For example, if an appointment is booked on the 5th Thursday of a month (which can happen), then if the next month only has 4 Thursdays, will Outlook book the appointment on the 4th Thursday on next month?

Let me test the solutions.  You guys rock!
0

Author Commented:
OK Guys,

I've tested the code snipets that were posted.  When I bounce the results against the Outlook calendar, what I really need to do is find the nth occurence of the date/day in the next month.  For example, today is the first Thursday of August, the next date I will need is the first Thursday in September, this can be done with dateadd("ww",4,date)
.  But, in the case where my starting date is the fifth Thursday of a month, I will need the last Thursday of the next month, if there are less than 5 Thursdays.

Now that I have enough information to be specific, any ideas?

Thanks Again
0

Commented:
Try this out

Function DayOccurence(dteDate)
Dim intN

intN = int(day(dtedate) / 7) + 1

Select Case intN
Case 1
DayOccurence = "First"
Case 2
DayOccurence = "Second"
Case 3
DayOccurence = "Third"
Case 4
DayOccurence = "Fourth"
Case 5
DayOccurence = "Fifth"

End Select
End Function
0

Commented:
Sorry didn't read the whole question.
0

Commented:
Try this one.

Dim dteStart, isLastWeek, intWeekNo, intNextMonth

dteStart = date()
intWeekNo = int(day(dteStart) / 7) + 1

DO WHILE month(dteEnd) <> intNextMonth
LOOP
0

Commented:
Hello @glenwr

Have you tested my post ?? if yes.. what output u got ??

neeraj523
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.