Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Mr.Chispa en 9 Septiembre 2006, 05:15 AM

Título: problema con fechas
Publicado por: Mr.Chispa en 9 Septiembre 2006, 05:15 AM
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:
Título: Re: problema con fechas
Publicado por: karmany en 9 Septiembre 2006, 16:35 PM
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


Título: Re: problema con fechas
Publicado por: Mr.Chispa en 10 Septiembre 2006, 00:15 AM
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
Título: Re: problema con fechas
Publicado por: Mr.Chispa en 10 Septiembre 2006, 00:17 AM
PD: tarda un poco en hacerlo pero si conoces alguna forma mejor decime  ;)
Título: Re: problema con fechas
Publicado por: karmany en 10 Septiembre 2006, 09:36 AM
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
Título: Re: problema con fechas
Publicado por: Hans el Topo en 10 Septiembre 2006, 12:44 PM
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")


Título: Re: problema con fechas
Publicado por: Mr.Chispa en 11 Septiembre 2006, 14:00 PM
DateAdd es lo q necesitaba ;D.
ya se, es algo medio raro lo q quiero hacer, gracias por la ayuda
saludos