Comunidad Gambas-es
Duda con manejo de horas - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Duda con manejo de horas (/thread-181.html)



Duda con manejo de horas - guizans - 07-11-2020

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.


RE: Duda con manejo de horas - tincho - 07-11-2020

(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


RE: Duda con manejo de horas - guizans - 07-11-2020

Gracias tincho, me servirá Wink


RE: Duda con manejo de horas - tincho - 07-11-2020

(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.


RE: Duda con manejo de horas - vuott - 07-11-2020

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



RE: Duda con manejo de horas (SOLUCIONADO) - guizans - 08-11-2020

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.


RE: Duda con manejo de horas - vuott - 08-11-2020

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