none
RESTAR TIEMPOS CRONOMETRO 03:36:03 - 03:32:06 RRS feed

  • Pregunta

  • Buenas necesito restar las diferencias de tiempo en una competencia siguiendo el  ejemplo que pongo

    TIEMPO                       DIFERENCIA

    03:32:06                             +0

    03:33:33                        +1:27

    03:36:03                        +3:57

    Por lo tanto tengo que tomar como dato fijo el primer tiempo y restarle los demás para saber la diferencia de todos los demás tiempos con el primero: 03:36:03 - 03:32:06 = + 03:57

    Estoy usando este código para obtener las diferencias y luego lo concateno

    horas = DateDiff(DateInterval.Hour, CDate(PrimerTiempo), CDate(TiempoSiguienteCorredor))
    minutos = DateDiff(DateInterval.Minute, CDate(PrimerTiempo), CDate(iempoSiguienteCorredor))
    segundos = DateDiff(DateInterval.Second, CDate(PrimerTiempo), CDate(iempoSiguienteCorredor))

    Pero tengo un problema, cuando las diferencias de tiempo son de más de un minuto, la diferencia de minutos se registra correctamente pero la diferencia de segundos se convierte en la suma de los minutos más los segundos así por ejemplo con la diferencia de tiempos 03:36:03 - 03:32:06 = + 03:57 voy a obtener en los segundos no 57 segundos como debiera sino 237 segundos que sería la suma de los minutos más los segundos.

    A ver si me ayudan a solucionar el problema o me puedan brindar un método donde pueda obtener las diferencias de tiempo correctamente. Anoto adicionalmente que las variables de tiempo son de tipo String.

    Gracias.


    Frank Cruz

    domingo, 5 de noviembre de 2017 18:11

Respuestas

  • Bueno solucioné el problema tomando esos segundos y dividiendolos entre 60 con lo que obtuve un numero de minutos con las fracciones decimales de segundos, separé los minutos y tomé las fracciones decimales de segundos y las multipliqué por sesenta, las redondié y así obtuve sólo los segundos que necesitaba.

     If g = 0 Then
                                    PrimerTiempo = TiempoRacer
                                    Diferencia = "+ 00"
                                End If
                                If g > 0 Then
                                    horas = DateDiff(DateInterval.Hour, CDate(PrimerTiempo), CDate(TiempoRacer))
                                    minutos = DateDiff(DateInterval.Minute, CDate(PrimerTiempo), CDate(TiempoRacer))
                                    segundos = DateDiff(DateInterval.Second, CDate(PrimerTiempo), CDate(TiempoRacer))
                                    If segundos > 59 Then
                                        ValorDecimal = segundos / 60
                                        ParteEntera = Int(ValorDecimal)
                                        segundos = ValorDecimal - ParteEntera
                                        segundos = Math.Round((segundos * 60), 1, MidpointRounding.ToEven)
                                        If segundos <= 9 Then
                                            segundos = "0" & segundos
                                        End If
                                    Else
                                        segundos = "0" & segundos
                                    End If
                                    If horas > 0 Then
                                        Diferencia = "+" & horas & ":" & minutos & ":" & segundos
                                    Else
                                        Diferencia = "+" & minutos & ":" & segundos
                                    End If
                                End If

    por si a alguien le ayuda el código lo dejó por acá.


    Frank Cruz

    • Marcado como respuesta Frank Jarquin domingo, 5 de noviembre de 2017 19:08
    domingo, 5 de noviembre de 2017 19:08