Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Work days between two dates - finally!
Message
From
09/06/2003 09:23:52
 
 
To
09/06/2003 09:10:15
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00797684
Message ID:
00797938
Views:
26
>Hi Cetin,
>
>this program for:
>
>({^2003/6/10},{^2003/6/16},k) return fixed 5 for every k=0-7.
>
>Fabio

Try couple of minor changes:
LPARAMETERS td1, td2, tnWorkDaysInWeek
* First day of workday is Monday - 2
LOCAL lnDays

IF td2 < td1
	LOCAL ldTemp
	ldTemp = td1
	td1 = td2
	td2 = ldTemp 
ENDIF

tnWorkDaysInWeek = IIF(EMPTY(tnWorkDaysInWeek),5,;
                   IIF(tnWorkDaysInWeek > 7, 7, tnWorkDaysInWeek))
lnFullWeeks = FLOOR((td2-td1)/7)
td1 = td1+lnFullWeeks*7
IF DOW(td1,2) > tnWorkDaysInWeek
  td1 = IIF(DOW(td2,2) > tnWorkDaysInWeek, ;
  	td1 + ABS(DOW(td1,2)-DOW(td2,2)), td1 + 7-DOW(td1,2))
ENDIF

lnAdd = IIF(DOW(td1,2) > tnWorkDaysInWeek, 0, 1 )

lnDays = IIF(DOW(td1,2) > DOW(td2,2), ;
	7 - lnAdd - DOW(td1,2) + DOW(td2,2), ;
	lnAdd + MIN(DOW(td2,2),tnWorkDaysInWeek) ;
	- MIN(DOW(td1,2),tnWorkDaysInWeek) )

RETURN lnFullWeeks * tnWorkDaysInWeek + lnDays + (tnworkdaysinweek - 5)
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform