hola:
tengo el siguiente problema, tengo una variable q guarda la cantidad de segundos q tarda x cosa, necesito saber a cuantas horas, minutos y segundos equivale eso.
ej: tengo la variable a=130 q equivale a decir 0:2:10 pero cuando le tiro a=102000 q equivale a decir 28:21:18.
cuando lo quiero pasar con cdate me tira error.
¿que puedo hacer? :huh:
Te paso un código que hice en un programa mío muy sencillo.
Te lo paso con a = 102000 segundos.
Por cierto tu respuesta: 102000 -> 28 h. 21 min. 18 seg. es incorrecta. El resultado es 28 horas con 20 minutos ya que:
28 h. * 3600 = 100800 segundos
20 min. * 60 = 1200 segundos
Sumando: 100800 + 1200 = 102000 segundos.
Pon solamente un textbox en un formulario para que veas el resultado. El código es el siguiente:
Private Sub Form_Load()
Dim a As Long
a = 102000 'El tiempo para Convertir_tiempo en segundos.!
Text1.Text = Convertir_tiempo(a)
End Sub
Public Function Convertir_tiempo(ByRef duracion As Long) As String
Dim Tmp As Long
Dim Horas As Long
Dim Minutos As Long
Dim Segundos As Long
On Error Resume Next
Tmp = duracion
Horas = Int(Tmp / 3600)
Tmp = Tmp - (Horas * 3600)
Minutos = Int(Tmp / 60)
Tmp = Tmp - (Minutos * 60)
Segundos = Tmp
Convertir_tiempo = ""
If Horas > 0 Then Convertir_tiempo = Format(Horas, "00") & ":"
Convertir_tiempo = Convertir_tiempo & Format(Fix(Minutos), "00") & ":"
Convertir_tiempo = Convertir_tiempo & Format(Fix(Segundos), "00")
End Function
ya lo pude resolver, de la forma bruta pero funciona, el problema era q cuando le queria suma a la hora actual "28:20:00" me tiraba error. lo q hize fue eso:
Private Sub Form_Load()
Dim a As Long
a = 102000 'El tiempo para Convertir_tiempo en segundos.!
ahora = Now
For i = 1 To a
ahora = ahora + CDate("00:00:01")
Next
Text1.Text = ahora
End Sub
saludos y gracias por la ayuda ;D
PD: tarda un poco en hacerlo pero si conoces alguna forma mejor decime ;)
Mira, a ver si te entiendo esto último.. intentas sumas a la fecha actual los 102000 segundos no??
Eso que haces de ese modo es bastante feo.
Si quieres añadir a una fecha un número determinado de segundos, por ej. en este caso 102000, lo puedes hacer muchísimo más sencillo de esta forma:
Private Sub Form_Load()
Dim a As Double
'Le pongo double porque en la definición de DateAdd:
'DateAdd (Interval as String, Number as Double, Date)
a = 102000 'segundos
'Ahora a la fecha actual le sumo los 102000 segundos:
Text1.Text = DateAdd("s", a, Now)
End Sub
Si quieres más información sobre DateAdd, MSDN:
http://msdn2.microsoft.com/es-es/library/hcxe65wz.aspx
yo nose si kieres sumarle a la fecha actual x segundos (para eso hay una función especiquica) o quieres simplemente convertir x segundos a horas minutos segs... eso se hace asi mismamente...
const SEGUNDOS_HORA=3600
const SEGUNDOS_MINUTO=60
dim a as long
dim horas as integer
dim minutos as integer
dim segundos as integer
....
'aki puedes crearte una función que devuelva el valor del finaly listo
a=total segundos
'sacamos las horas
horas=a / SEGUNDOS_HORA
a=a MOD horas
'sacamos los minutos
minutos=a/SEGUNDOS_MINUTO
a=a MOD minutos
'sacamos los segundos
segundos=a
text1.text=format(horas,"00") & format(minutos,"00") & format(segundos,"00")
DateAdd es lo q necesitaba ;D.
ya se, es algo medio raro lo q quiero hacer, gracias por la ayuda
saludos