locked
VB.NET - Convertir minutos a hora RRS feed

  • Pregunta

  • Estimados,

    necesito convertir, por ejemplo, 84 minutos en 01:24 hrs.

    Como lo puedo hacer, alguna función?

    viernes, 16 de julio de 2010 2:31

Respuestas

  • hola

    podrias hacer

    Dim minutos As Integer = 84

    Dim hora As String = String.Format("{0:N0}:{1:N0} hrs", minutos / 60, minutos Mod 60)

     

    Nota: el N0 indice quee s un numero con cero decimales

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 16 de julio de 2010 2:59

Todas las respuestas

  • hola

    podrias hacer

    Dim minutos As Integer = 84

    Dim hora As String = String.Format("{0:N0}:{1:N0} hrs", minutos / 60, minutos Mod 60)

     

    Nota: el N0 indice quee s un numero con cero decimales

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 16 de julio de 2010 2:59
  • esto es mas largo pero igual funciona:

    dim minutos as integer

    minutos=84

    dim horas as integer

    while minutos=>60

         horas=horas+1

         minutos=minutos-60 //aqui minutos quedaria en (84-60=24)

    end while

    string total=horas & ":" & minutos

     

    no estoy seguro si estoy usando bien el while(tengo mucho sin usar vb) pero el concepto es basico, mientras tu variable minutos sea mayor que 60 ps tu variable horas se incrementa mientras que la var minutos se decrementa en 60 (ps esos 60 ya se convirtieron en 1 hora), igual y por ahi tienes que covertir horas y minutos a string, pero supongo que eso ya sabes como hacerlo


    DavidDDR david_fer1@hotmail.com
    • Propuesto como respuesta Cautivo01 viernes, 20 de octubre de 2017 6:15
    viernes, 16 de julio de 2010 6:50
  • hola ,

    Que has visto con la informacion que te facilitaron te ha dado resultado ?

    enmanuel grullard

    republica dominicana

     

    viernes, 16 de julio de 2010 20:51
    Moderador
  • enmanuel buenas tardes, la solucion de Leandro Tuttini funciona a la perfeccion

    Edgar Ch.

    Republica de Colombia

    jueves, 29 de julio de 2010 21:03
  • En realidad a esta función hay que hacerles varios ajustes, por ejemplo si le pasas 56 minutos devuelve 1:56 hrs, o si le pasas 125 minutos devuelve 2:5 hrs.

    En cambio la siguiente función que diseñe realmente funciona correctamente.

    Public Shared Function ConvertirMinutosAHoras(ByVal paramMinutos As Short) As String

    Return paramMinutos \ 60 & ":" & IIf(paramMinutos Mod 60 < 10, "0" & paramMinutos Mod 60, paramMinutos Mod 60) & "hs"

    End Function

    Notar la división entera, muy importante a la hora de terminar la cantidad de horas.

    Lo dejo para futuras generaciones!

    jueves, 12 de enero de 2012 14:32
  • En realidad a esta función hay que hacerles varios ajustes, por ejemplo si le pasas 56 minutos devuelve 1:56 hrs, o si le pasas 125 minutos devuelve 2:5 hrs.

     

    En cambio la siguiente función que diseñe realmente funciona correctamente.

    Public Shared Function ConvertirMinutosAHoras(ByVal paramMinutos As Short) As String

     Return paramMinutos \ 60 & ":" & IIf(paramMinutos Mod 60 < 10, "0" & paramMinutos Mod 60, paramMinutos Mod 60) & "hs"

    End Function

    Notar la división entera, muy importante a la hora de terminar la cantidad de horas.

    Lo dejo para futuras generaciones!

     

    Hola Leonardo.giampietro,

    realmente tienes razon 56 minutos usando el mod te devuelve 56 y 56 / 60 para calcular las horas, es aqui donde esta el problema, ¿Porque? porque este te devuelde double cuyo valor sera: 0.93333333333333335 y como lo estas almacenando en un Integer lo redondea a 1 por ende el resultado sera 1:56.

    para resolver aun siendo mas practicos comprueba de esta manera.

    Dim totalMinutos As Integer = 570
    Dim minutos As Integer = 0
    Dim horas As Integer = Math.DivRem(totalMinutos, 60, minutos)
    MessageBox.Show(String.Format("{0:00}:{1:00}", horas, minutos))
    
    


    donde 570 = 9 horas con 30 minutos.

    bien es cierto que es una pregunta que ya ha sido respondida, pero que tiene el error lo tiene.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    jueves, 12 de enero de 2012 16:00
    Moderador
  • Public Shared Function ConvertirMinutosAHoras(ByVal paramMinutos As Short) As String

     Return paramMinutos \ 60 & ":" & IIf(paramMinutos Mod 60 < 10, "0" & paramMinutos Mod 60, paramMinutos Mod 60) & "hs"

    End Function

     

    mmm... mi ejemplo anterior fue por el IIf() que usas... no lo lei bien y es por que si el resultado tiene menos de 10 minutos y como estas devolviendo una cadena le asignas un 0 a la izquierda de los minutos para que lo pase de la siguiente manera

    por ejemplo:

    9:1 entonces devolvera 9:01.... bien, aplicandole formato evitarias el IIf(), claro!!!!.. en VB.NET lo desconosco en versiones previas a VS.NET

    hago la aclaración.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    jueves, 12 de enero de 2012 16:25
    Moderador