04/07/2011, 23:43
|
| | Fecha de Ingreso: noviembre-2002 Ubicación: DF
Mensajes: 1.056
Antigüedad: 22 años, 1 mes Puntos: 37 | |
Respuesta: calcular tiempo Hora inicio-Hora Final Yo no he usado el datediff, pero se que se puede usar, yo regularmente uso esta funcion con Visual Basic (debes enviarle en formato 00:00:00
Public Function Lapsus(hora1, hora2)
'-----------------------------------------
' Funcion para sacar la diferencia de tiempos entre 2 horas
'-----------------------------------------
hora1 = Trim(hora1)
hora2 = Trim(hora2)
If hora1 = "" Or hora2 = "" Then
Lapsus = ""
Exit Function
End If
If Len(hora1) < 4 Or Len(hora2) < 4 Then
Lapsus = ""
Exit Function
End If
' a) Recuperamos la hora
tmp_HI = Hour(Left(hora1, 8))
tmp_HF = Hour(Left(hora2, 8))
' b) Recuperamos los minutos
tmp_mI = Minute(Left(hora1, 8))
tmp_mF = Minute(Left(hora2, 8))
' c) Recuperamos los segundos
tmp_sI = Second(Left(hora1, 8))
tmp_sF = Second(Left(hora2, 8))
' d) Rccuperamos las centesimoas/milesimas
If Len(hora1) > 8 And Len(hora2) > 8 Then
' Agrega ceros por si viene en centesimas no milesimas
tmp_dI = Int(Mid(hora1 & "000", 10, 3))
tmp_dF = Int(Mid(hora2 & "000", 10, 3))
End If
'e) Obtiene diferencias
tmp_hd = tmp_HF - tmp_HI
tmp_md = tmp_mF - tmp_mI
tmp_z = tmp_sF - tmp_sI
tmp_dd = tmp_dF - tmp_dI
' Para resultados negativos en Centesimas o milesimas
If tmp_dd < 0 And (tmp_sF > tmp_sI Or tmp_mF > tmp_mI Or tmp_HF > tmp_HI) Then
tmp_dd = (1000 + tmp_dF) - tmp_dI
tmp_z = tmp_z - 1
End If
'*** falto algo aqui
' Para resultados negativos en Segundos
If tmp_z < 0 And (tmp_mF > tmp_mI Or tmp_HF > tmp_HI) Then
tmp_z = tmp_z + 60
tmp_md = tmp_md - 1
End If
' Para resultados negativos en MInutos
If tmp_md < 0 And tmp_HF > tmp_HI Then
tmp_md = tmp_md + 60
tmp_hd = tmp_hd - 1
End If
' Para resultados negativos en horas
If tmp_hd < 0 Then
tmp_hd = tmp_hd * (-1)
End If
Lapsus = Right("00" & tmp_hd, 2) & ":" & Right("0" & tmp_md, 2) & ":" & Right("00" & tmp_z, 2) & "." & Right("000" & tmp_dd, 3)
End Function |