Calcular tiempo de Funcionamiento de un Motor

Necesito determinar el tiempo que duró un motor en funcionamiento.

El tiempo debe calcularse en horas, minutos y segundos y, en días, horas, minutos y segundos, por ejemplo:

FECHA Y HORA ENCENDIDO --à 09/12/2022  21:05:12

FECHA Y HORA DE APAGADO --à 12/10/2022  06:50:15

Formato 1. En horas, minutos y segundos -à 57:45:03

Formato 2. En días, horas, minutos y segundos -à 2:09:45:03

1 Respuesta

Respuesta
1

Hernán, con los datos de la pregunta no se obtienen esos valores, le preparé este ejemplo, pero cambiando la fecha de encendido,

Utilizo una función que permite calcular solo tiempo horas, minutos y segundos o días, horas, minutos y segundos.

CÓDIGO DEL BOTÓN CALCULAR

Private Sub btnCalcular_Click()
 If IsDate(Me.ctlinicio) And IsDate(Me.ctlapagado) Then
    If Me.ctlapagado < Me.ctlinicio Then
      MsgBox "La fecha y hora de apagado debe ser mayor que el inicio", vbInformation, "Cuidado"
      Me.ctlapagado.SetFocus
      Exit Sub
    End If
   End If
   Me.ctlhm = TiempoUso(Me.ctlinicio, Me.ctlapagado)
   Me.ctldhm = TiempoUso(Me.ctlinicio, Me.ctlapagado, True)
End Sub

Observe que la función TiempoUso acepta hasta 3 parámetros, para obtener solo horas, minutos y segundos se pasan 2 parámetros, fecha hora inicio y fecha hora apagado. Para obtener los días se pasa el tercer parámetro.

CÓDIGO DE LA FUNCIÓN TIEMPOUSO

Public Function TiempoUso(dtDesde As Date, dtHasta As Date, _
            Optional blnMostrarDias As Boolean = False) As String
   'Función para hallar el tiempo transcurrido desde una fecha y hora
 'hasta otra fecha y hora.
   'Ejemplo de llamada:
   '   Tiempouso(#10/09/2022 21:05:12#,#10/12/2022 06:50:15#)
   '   Retorna 57:45:03 - Solo horas, minutos y segundos
   '
   '   Tiempouso(#10/09/2022 21:05:12#,#10/12/2022 06:50:15#,True)
   '   Retorna 2:09:45:03  - Días, horas, minutos y segundos
    Dim dtTiempo As Date
    Dim lngDias As Long
    Dim strDias As String
    Dim strHoras As String
    ' restar un día de la hora 'desde' si es posterior o igual que la hora 'hasta'
    If dtHasta <= dtDesde Then
        If Int(dtDesde) + Int(dtHasta) = 0 Then
            dtDesde = dtDesde - 1
        End If
    End If
    ' obtener la duración como tipo de datos de fecha y hora
    dtTiempo = dtHasta - dtDesde
   'obtener los días enteros
    lngDias = Int(dtTiempo)
    strDias = CStr(lngDias)
    ' obtener horas
    strHoras = Format(dtTiempo, "hh")
    If blnMostrarDias Then
        TiempoUso = lngDias & ":" & strHoras & Format(dtTiempo, ":nn:ss")
    Else
        TiempoUso = Format((Val(strDias) * 24) + Val(strHoras), "#,##0") & _
            Format(dtTiempo, ":nn:ss")
    End If
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas