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:

GAMBAS
  1.  
  2. a = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)



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

GAMBAS
  1. Public Function SecondsToHMS(intTime As Integer) As Integer[]
  2.  
  3.   Dim intH As Integer ' Horas
  4.   Dim intN As Integer ' Minutos
  5.   Dim intS As Integer ' Segundos
  6.   Dim stxTime As New String[]
  7.  
  8.   Select intTime / 3600
  9.     Case 0
  10.       intH = 0
  11.     Case 1
  12.       intH = 1
  13.       intN = 0
  14.     Case Else
  15.       intH = intTime / 3600
  16.       Select (intTime Mod 3600) Mod 60
  17.         Case 0
  18.           intN = (intTime Mod 3600) / 60
  19.           intS = 0
  20.         Case Else
  21.           intN = (intTime Mod 3600) / 60
  22.           intS = (intTime Mod 3600) Mod 60
  23.       End Select
  24.   stxTime.Add(intH)
  25.   stxTime.Add(intN)
  26.   stxTime.Add(intS)
  27.   Return stxTime


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...
GAMBAS
  1. a = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)
  2. 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:

GAMBAS
  1. Public Sub Main()
  2.  
  3.  
  4.   i = DateDiff(Date(0, 0, 0, 11, 00), Date(0, 0, 0, 12, 30), gb.Minute)
  5.  
  6.   Print Format(Time(0, 0, 0, i * 60000)
  7.  


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

GAMBAS
  1. Print Format(Time(0, 0, 0, i * 60000), "hh:nn")



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")