Comunidad Gambas-es

Versión completa: Duda con manejo de horas
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a todos.

Vamos a suponer que tengo el siguiente código:

Código:
Dim a As Integer

a = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)
Print a

Esto funciona perfectamente, imprimiendo 90 minutos. Mi pregunta es, ¿se puede usar Format$() para pasar esos 90 minutos a "1:30"? Y si es así, ¿cómo se hace? ¿O por el contrario tengo que hacerme una función que haga ese trabajo?

Muchas gracias.
(07-11-2020, 17:43)guizans escribió: [ -> ]se puede usar Format$() para pasar esos 90 minutos a "1:30"?

Hola Guinzas, si se puede.
Creo que esto te servirá.
'' Returns the time in a matrix where: 0-Y 1-M 2-D 3-H 4-N 5-S and as an input parameter requires the time in seconds

Código:
Public Function SecondsToHMS(intTime As Integer) As Integer[]

  Dim intH As Integer ' Horas
  Dim intN As Integer ' Minutos
  Dim intS As Integer ' Segundos
  Dim stxTime As New String[]

  Select intTime / 3600
    Case 0
      intH = 0
    Case 1
      intH = 1
      intN = 0
    Case Else
      intH = intTime / 3600
      Select (intTime Mod 3600) Mod 60
        Case 0
          intN = (intTime Mod 3600) / 60
          intS = 0
        Case Else
          intN = (intTime Mod 3600) / 60
          intS = (intTime Mod 3600) Mod 60
      End Select
  End Select
  stxTime.Add(intH)
  stxTime.Add(intN)
  stxTime.Add(intS)
  Return stxTime
End
Saludos
Gracias tincho, me servirá Wink
(07-11-2020, 19:18)guizans escribió: [ -> ]Gracias tincho, me servirá

Me quede dandole veueltas al tema. A parecer no hat una forma de pasarle a format directamente los 90 miutos pero...
Código:
a = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)
Print Format(Time(CInt(a / 60), a Mod 60, 0, 0), "hh:nn")
Eso si que devuelve 1:30
Saludos.
Intentando condensar el buen consejo de tincho:

Código:
Public Sub Main()

  Dim i As Integer

  i = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)
 
  Print Format(Time(0, 0, 0, i * 60000)

End
Gracias a todos por vuestra ayuda.

El código de vuott me gusta mucho, es el más reducido y el más fácil de entender, pero lo he mejorado para que de un resultado mas a mi gusto Big Grin

[code]

Un saludo.
(08-11-2020, 12:48)guizans escribió: [ -> ]pero lo he mejorado

Sì, perdona, pegando mi código, yo Confused olvidé el segundo parametro de la función "Fomat()" !

Sì, la linea correcta es: Format(Time(0, 0, 0, i * 60000), "hh:nn")