Solved

DateAdd (with minutes) to skip weekends in classic ASP

Posted on 2012-03-30
2
858 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 53

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

Why Off-Site Backups Are The Only Way To Go

You are probably backing up your data—but how and where? Ransomware is on the rise and there are variants that specifically target backups. Read on to discover why off-site is the way to go.

Question has a verified solution.

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

When it comes to write a Context Sensitive Help (an online help that is obtained from a specific point in state of software to provide help with that state) ,  first we need to make the file that contains all topics, which are given exclusive IDs. …
Color can increase conversions, create feelings of warmth or even incite people to get behind a cause. If you want your website to really impact site visitors, then it is vital to consider the impact color has on them.
The viewer will learn how to dynamically set the form action using jQuery.
Starting up a Project

691 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