guizans   07-11-2020, 17:43
#1
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.
tincho   07-11-2020, 19:02
#2
(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
Última modificación: 07-11-2020, 19:02 por tincho.

1 Saludo.
guizans   07-11-2020, 19:18
#3
Gracias tincho, me servirá Wink
tincho   07-11-2020, 19:24
#4
(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.
Última modificación: 07-11-2020, 19:25 por tincho.

1 Saludo.
vuott   07-11-2020, 21:13
#5
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

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
guizans   08-11-2020, 12:48
#6
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.
Última modificación: 08-11-2020, 12:51 por guizans.
vuott   08-11-2020, 17:39
#7
(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")

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
  
Usuarios navegando en este tema: 4 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.