none
Como pasar días a horas RRS feed

  • Pregunta

  • Buenas estoy trabajando con horas en un programa para un evento deportivo por etapas, los resultados se deben mostrar en horas, minutos y segundos. Como es un evento por etapas los tiempos de cada día se van sumando, cuando sobre paso la cantidad de 24 horas el tiempo se me acumula por dias, horas, minutos y segundos. Existe alguna función que me convierta ese tiempo en horas? por ejempo 1.09:53:25 (1 día, 9 horas, 53 minutos, 25 segundos) en 33:53:25 o sea (33 horas, 53 minutos, 25 segundos). Se que podria dividir los días entre veinticuatro y obtener las horas, luego sumarlas pero si existe una funcion que ya haga eso mejor sería usarla. Gracias.

    Frank Cruz

    viernes, 8 de diciembre de 2017 20:13

Respuestas

  • ¿El valor '1.09:53:25' es la representación del tiempo transcurrido que guardas en alguna estructura o clase?, ¿o sólo se trata de una cadena de caracteres que has recuperado desde la base de datos realizando operaciones de concatenación o formateo?.

    Multiplicar los días por 24 y sumarle el componente de horas no es una operación que requiera mayor automatismo, sin embargo, creo que deberías dar un paso hacia atrás y considerar el valor que recuperas para su representación, pienso que puede resultarte conveniente obtener -desde la base de datos- el valor convertido a segundos, y desde la UI, representar el tiempo bajo el formato que mejor te convenga, por ejemplo:

    Dim Seconds = 122005 'Valor recuperado mediante una consulta a la base de datos
    Dim ts = TimeSpan.FromSeconds(Seconds)
    
    Dim Time1 = $"{Math.Floor(ts.TotalHours)}:{ts:mm\:ss}" 'Resultado: 33:53:25
    Dim Time2 = $"{ts:t}" 'Resultado: 1.09:53:25


    viernes, 8 de diciembre de 2017 22:26

Todas las respuestas

  • Si metes el dato dentro de un objeto TimeSpan, tiene propiedades para consultar el intervalo en cualquier unidad que quieras. Por ejemplo, puedes leer las propiedades Days y Hours, pero si lo prefieres puedes llamar a TotalHours que te da el total expresado en horas.

    https://msdn.microsoft.com/es-es/library/system.timespan(v=vs.110).aspx

    • Propuesto como respuesta Sergio Parra viernes, 8 de diciembre de 2017 20:53
    viernes, 8 de diciembre de 2017 20:26
  • El detalle es que acá lo que obtengo es solamente las horas y es justamente lo que quería evitar de estar dividiendo y concatenando, esperaba ver que hubiese una función que me convirtiera el tiempo total a horas, minutos y segundos.

    Frank Cruz

    viernes, 8 de diciembre de 2017 21:15
  • ¿El valor '1.09:53:25' es la representación del tiempo transcurrido que guardas en alguna estructura o clase?, ¿o sólo se trata de una cadena de caracteres que has recuperado desde la base de datos realizando operaciones de concatenación o formateo?.

    Multiplicar los días por 24 y sumarle el componente de horas no es una operación que requiera mayor automatismo, sin embargo, creo que deberías dar un paso hacia atrás y considerar el valor que recuperas para su representación, pienso que puede resultarte conveniente obtener -desde la base de datos- el valor convertido a segundos, y desde la UI, representar el tiempo bajo el formato que mejor te convenga, por ejemplo:

    Dim Seconds = 122005 'Valor recuperado mediante una consulta a la base de datos
    Dim ts = TimeSpan.FromSeconds(Seconds)
    
    Dim Time1 = $"{Math.Floor(ts.TotalHours)}:{ts:mm\:ss}" 'Resultado: 33:53:25
    Dim Time2 = $"{ts:t}" 'Resultado: 1.09:53:25


    viernes, 8 de diciembre de 2017 22:26
  • Gracias Willams Morales, sí estaba guardando esos tiempos en formato de hora  en una base de datos y me está creando problemas las sumas y restas, ya hice una prueba con tu respuesta y me soluciona el problema, sólo que tendré que  modificar parte del código que tenía realizado porque no me daba problemas mientras los tiempos no pasaran a días pero al suceder esto sí.

    Frank Cruz

    sábado, 9 de diciembre de 2017 14:45