thanks for the explanation. here is my formula. i've tried to add enough commments so you know what i'm trying to do.
//forumla for "time to first contact" business hours only
dateTimeVar Start:= {@date/time adj for GMT case entered};
dateTimeVar End:= {@date/time adj for GMT first contact};
timeVar defaultstarttime:= time(08,30,00);
timeVar defaultendtime:= time(18,00,00);
stringVar workingdays:= "-23456-";
//------------------------------------------------------------------------------
dateVar startdate:= date(Start);
timeVar starttime:= time(Start);
dateVar enddate:= Date(End);
timeVar endtime:= Time(End);
numberVar HrsInAWorkDay:= Hour (defaultendtime) - Hour (defaultstarttime);
//------------------------------------------------------------------------------
While wdaysClass1wdIsWorkDay (startdate, workingdays) =
FALSE do
(startdate:=startdate +1;
starttime:=defaultstarttime);
//------------------------------------------------------------------------------
//if startdate falls on a non working day, make startdate the next working day
While wdaysClass1wdIsWorkDay (enddate, workingdays) = FALSE do
(enddate:= enddate +1; endtime:=defaultstarttime);
//------------------------------------------------------------------------------
//if enddate falls on a non working day, make enddate the next working day
While wdaysClass1wdIsWorkDay (enddate,workingdays) = FALSE do
(enddate:= enddate +1; endtime:=defaultstarttime);
//------------------------------------------------------------------------------
//if endtime or starttime are not within business hours, assign it to the defaulttime
if endtime < defaultstarttime then
endtime:= defaultstarttime;
if endtime > defaultendtime then
endtime:= defaultendtime;
if starttime < defaultstarttime then
starttime:= defaultstarttime;
if starttime > defaultendtime then
starttime:= defaultendtime;
//------------------------------------------------------------------------------
//calculate totalworkdays
numbervar totaldays:=wdaysclass1wdnumworkdays(startdate,enddate, workingdays);
//------------------------------------------------------------------------------
// calculate hours in full days (subtract 1st and last day * hours in a workday)
numbervar hours_fulldays:= (totaldays - 2) * HrsInAWorkDay;
//------------------------------------------------------------------------------
//calculate hours in first day
numbervar hours_firstday:= hour(defaultendtime) - ((hour(starttime)*60) + minute(starttime))/60;
//------------------------------------------------------------------------------
//calculate hours in last day
numbervar hours_lastday:= (hour(endtime) + (minute(endtime)/60)) - hour(defaultstarttime);
//------------------------------------------------------------------------------
//business hour = fulldays + firstday + lastday
hours_fulldays + hours_firstday + hours_lastday;