Solved

DateAdd (with minutes) to skip weekends in classic ASP

Posted on 2012-03-30
2
841 Views
Last Modified: 2012-04-02
I'm doing some development in classic ASP.  I have a starting datetime value and I want to add to it a period of time in minutes, but it needs to skip weekends.

For example, if I have a starting datetime of Thursday @ 7:00am and I add to it 3045 minutes (50 hours: 45 minutes)...it should finish on Monday @ 9:45am.

Any ideas?

Thanks.
bruno71
0
Comment
Question by:bruno71
2 Comments
 
LVL 52

Accepted Solution

by:
Scott Fell,  EE MVE earned 500 total points
ID: 37788556
I'm sure there is more then one way to do this.  I would start with finding the end date, then looping through each day to find which is a weekend day, then add the minutes for those days.  If you need to account for the start date being a weekend, then find the time it starts and subtract those minutes.  I have not tested this.  

'Assumes your start date is not on a weekend.
StartDate=request("StartDate") 'format should be in something like, "1/1/2012 08:50:00"
MinutesAdded=request("MinutesAdded")
EndDate = dateadd("n", MinutesAdded,StartDate) ' find the end date
totDays=datediff("d",StartDate,EndDate) ' find out how many days you are adding.

WeekEndCounter =0
for x = 1 to totDays
   if Weekday(DateAdd("d",x,StartDate) )=1 or Weekday(DateAdd("d",x,StartDate) )=7 then ' check for sunday or saturday
   WeekEndCounter=WeekEndCounter+1
next
AddMoreMinutes=WeekEndCounter*1440 ' 1440 minutes in a day ' could have just done days too for this
FinalDateTime = dateadd("n",AddMoreMinutes,DateEnd)

' If you need to account for the start date being a weekend, then we need to subtract some minutes.
If weekday(StartDate) = 1 or weekday(StartDate) = 7 then
     SubtractMinutes = ((hour(DateStart)*60 ) + minute(DateStart)) * -1
     FinalDateTime=dateadd("n",SubtractMinutes,FinalDateTime)

end if

Open in new window

0
 

Author Closing Comment

by:bruno71
ID: 37797422
Thanks.  That worked...except I had to add one little piece.

This is to account for the recalculated ending date being on a weekend...

Do While Weekday(EndDate) = 1 or Weekday(EndDate) = 7
            EndDate = DateAdd("n", 1440, EndDate)
Loop

For example, if the ending date landed on a Tuesday and we skipped two weekends...the calculation would add 4 days - landing on a Saturday.  This just loops through to the next weekday.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Get to know the ins and outs of building a web-based ERP system for your enterprise. Development timeline, technology, and costs outlined.
An enjoyable and seamless user experience can go a long way on an eCommerce site. While a cohesive layout and engaging copy play roles in creating a positive user experience, some sites neglect aspects that seem marginal but in actuality prove very …
This tutorial walks through the best practices in adding a local business to Google Maps including how to properly search for duplicates, marker placement, and inputing business details. Login to your Google Account, then search for "Google Mapmaker…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now