wsj81383,
I misread your question first, so I may be providing you with more than you need, but hopefully it'll help you on your way if my logic is straight. I was calculating total uptime when I noticed you wanted total downtime.
You have to approach this problem from three separate standpoints: 1) the total downtime on the first day based on the start time of the first day; 2) the total downtime on the last day based on the end time of the last day; plus 3) the total amount of days difference to begin with.
First, I created a table, called Table1, (sorry got lazy) with two fields in it called starttime and endtime, with data types of date/time. This table should be self-explanatory.
Then I created two queries with the following sql statements:
(the first called qryTimeSetup):
SELECT Table1.starttime, Table1.endtime, Int([endtime])-Int([starttime]) AS Days, [starttime]-Int([starttime]) AS Start, [endtime]-Int([endtime]) AS End, IIf([start]<=1/4,"early",IIf([start]<11/12,"middle","late"

) AS StartCompare, IIf([end]<=1/4,"early",IIf([end]<11/12,"middle","late"

) AS EndCompare
FROM Table1;
(the second called qryTimeFinals):
SELECT IIf([startcompare]="early",(1/4-[start]),IIf([startcompare]="middle",11/12,(1-[start]))) AS totalstart, IIf([endcompare]="early",[end],IIf([endcompare]="middle",1/12,[end]-11/12)) AS totalend, Format(IIf([days]=0,[endtime]-[starttime],[days]+[totalstart]+[totalend]),"0.0000000"

*1 AS totaluptime, IIf([startcompare]="early",2/3,IIf([startcompare]="middle",11/12-[start],0)) AS totaldowntimestart, IIf([endcompare]="early",0,IIf([endcompare]="middle",[end]-1/4,2/3)) AS totaldowntimeend, Format(IIf(([days]=0 And ([startcompare]="early" And [endcompare]="early"

) Or ([days]=0 And ([startcompare]="late" And [endcompare]="late"

),0,IIf([days]=0 And ([startcompare]="early" And [endcompare]="middle"

,[endtime]-(Int([endtime])+1/4),IIf([days]=0 And ([startcompare]="middle" And [endcompare]="middle"

,[endtime]-[starttime],IIf([days]=0 And ([startcompare]="middle" And [endcompare]="late"

,(Int([starttime])+11/12)-[starttime],IIf([days]=0 And ([startcompare]="early" And [endcompare]="late"

,2/3,[days]+[totalstart]+[totalend]))))),"0.0000000"

*1 AS totaldowntime
FROM qryTimeSetup;
The first query provides a total number of days, extracts the start and end times and performs a comparison on them to split them into the three categories: 1) early: before 6am; 2) middle: between 6am and 10pm; and 3) late: after 10 pm.
The second query then calculates the total times that items were up or down based on the possible scenarios of the first query (i.e. early/early, early/middle, early/late, middle/early, etc.) and spits out the total in number of days and the portion of days in decimal format. Hopefully you can convert the times thereafter.
I setup the database in this format just in case you decide in the future to change your "clock" to some other time system. You would edit the clock times by replacing the references to the start time of 1/4 (6:00 AM) and end time of 11/12 (10:00 PM) accordingly.
Hope this helps.