Bom dia HDZ,Corrigido mais uma veiz (versão 0.00001b) cheio de bugs provavelmente hehehe:
Function FormatDateTime(DateTime) 'Autor: Felipe C. Mosca <fmosca@ajato.com.br> 'Function: FormatDateTime() 'Descrição: Formata hora e data para o formato [dd/mm/yyyy] e [hh:mm:ss] If InStr(1, DateTime, "/") > 0 Then sDta = DateTime If Mid(sDta, 2, 1) = "/" Then sDta = "0" & sDta If Mid(sDta, 5, 1) = "/" Then sDta = Left(sDta, 3) & "0" & Right(sDta, 6) FormatDateTime = sDta Else sTime = DateTime If Mid(sTime, 2, 1) = ":" Then sTime = "0" & sTime If Mid(sTime, 5, 1) = ":" Then sTime = Left(sTime, 3) & "0" & Right(sTime, Len(sTime) - 3) If Mid(sTime, Len(sTime) - 1, 1) = ":" Then sTime = Left(sTime, Len(sTime) - 1) & "0" & Right(sTime, 1) FormatDateTime = sTime End If End Function Function CalculaHoras(DataInicial, HoraInicial, DataFinal, HoraFinal) 'Autor: Felipe C. Mosca <fmosca@ajato.com.br> 'Function: CalculaHoras() 'Descrição: Calcula as horas durante um período de datas Dim arrDias(5, 2) arrDias(0, 0) = "08:00:00": arrDias(0, 1) = "17:30:00" 'Segunda arrDias(1, 0) = "08:00:00": arrDias(1, 1) = "17:30:00" 'Terça arrDias(2, 0) = "08:00:00": arrDias(2, 1) = "17:30:00" 'Quarta arrDias(3, 0) = "08:00:00": arrDias(3, 1) = "17:30:00" 'Quinta arrDias(4, 0) = "08:00:00": arrDias(4, 1) = "15:30:00" 'Sexta 'arrDias(5,0) = "08:00:00": arrDias(5,1) = "17:30:00" 'Sabado iD = Day(DataInicial) iM = Month(DataInicial) iA = Year(DataInicial) Do Until DataTmp = DataFinal DiaIni = iD MesIni = iM AnoIni = iA DataTmp = FormatDateTime(DiaIni & "/" & MesIni & "/" & AnoIni) If IsDate(DataTmp) Then Select Case Weekday(DataTmp) Case 2, 3, 4, 5, 6 ', 7 sDias = sDias & DataTmp & "*" End Select End If iD = iD + 1 If iD = 32 Then iM = iM + 1 iD = 1 If iM = 13 Then iA = iA + 1 iM = 1 iD = 1 End If End If Loop If sDias <> "" Then If InStr(1, sDias, "*") > 0 Then sDias = Left(sDias, Len(sDias) - 1) If InStr(1, sDias, "*") > 0 Then Dias = Split(sDias, "*") For i = LBound(Dias) To UBound(Dias) If i = LBound(Dias) Then If HoraInicial > arrDias(Weekday(Dias(i)) - 2, 0) Then HoraIniTmp = HoraInicial Else HoraIniTmp = arrDias(Weekday(Dias(i)) - 2, 0) End If Else HoraIniTmp = arrDias(Weekday(Dias(i)) - 2, 0) End If If i = UBound(Dias) Then If HoraFinal < arrDias(Weekday(Dias(i)) - 2, 1) Then HoraFimTmp = HoraFinal Else HoraFimTmp = arrDias(Weekday(Dias(i)) - 2, 1) End If Else HoraFimTmp = arrDias(Weekday(Dias(i)) - 2, 1) End If SecDif = SecDif + DateDiff("s", HoraIniTmp, HoraFimTmp) Next Else If HoraInicial > arrDias(Weekday(sDias) - 2, 0) Then HoraIniTmp = HoraInicial Else HoraIniTmp = arrDias(Weekday(sDias) - 2, 0) End If If HoraFinal < arrDias(Weekday(sDias) - 2, 1) Then HoraFimTmp = HoraFinal Else HoraFimTmp = arrDias(Weekday(sDias) - 2, 1) End If SecDif = DateDiff("s", HoraIniTmp, HoraFimTmp) End If End If Else CalculaHoras = -1 Exit Function End If MinDif = SecDif \ 60 SecDif = SecDif Mod 60 HourDif = MinDif \ 60 MinDif = MinDif Mod 60 CalculaHoras = FormatDateTime(HourDif & ":" & MinDif & ":" & SecDif) End Function
Teste ae..tem q dar 16:30:Response.Write CalculaHoras("10/12/2004", "08:30:00", "13/12/2004", "21:00:45")
Chego a acreditar que é alguma distorção do meu servidor web aqui, pois novamente com o seu código (CTRL + C / CTRL + V) me retornou um horario não desejado = 390:0:00. Muito estranho.
Agora o que comprova que o problema é aqui, é que o resultado da função que o Leo fez também retorna um horario distorcido = 409:00.
Ambos resultados de acordo com os horarios que vocês escolheram ai no seus posts.
De qualquer forma valeu, ja ajudou e muito! (como aprendizado)
Vou ver com o pessoal de infra-estrutura WEB aqui para saber quais possíveis motivos...
Valeu!
Abraços,