This should work. I haven't accounted for holidays, but that's pretty easily done.
Starting date and time in column B, Finish date and time in column C.
Formula in D2, and filed down the column:
D2: =DUR2DAYS(NETWORKDAYS(B2,C2,))*9.5-24*(TIMEVALUE(B2)-TIMEVALUE("1/1/1 07:30"))-24*(TIMEVALUE("1/1/1 17:00")-TIMEVALUE(C2))
The result is a number, representing the number of working hours in the period. The formula has three parts:
DUR2DAYS(NETWORKDAYS(B2,C2,))*9.5
NETWORKDAYS returns a duration value equivalent to the number of workdays in the period.
DUR2DAYS converts that duration to a number.
*9.5 multiplies the number of days by the number of hours worked in a full day.
-24*(TIMEVALUE(B2)-TIMEVALUE("1/1/1 07:30"))
TIMEVALUE extracts the time of day from the value in B2 and returns it as a decimal fraction of the 24 hour day that has passed since midnight. The second TIMEVALUE does the same for the date and time value "1/1/1 07:30", the starting time of the working day.
The difference between the two time values is multiplied by 24 to determine the number of hours not worked at the beginning of the first day. This is subtracted from the result above.
-24*(TIMEVALUE("1/1/1 17:00")-TIMEVALUE(C2))
This part calculates and subtracts the number of hours not worked at the end of the finish date.
Regards,
Barry
PS: Holidays are handled in the NETWORKDAYS function. See the iWork Formulas and Functions User Guide for details. The guide may be downloaded via th Help menu in Numbers '09.