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: iaorengo en 21 Noviembre 2011, 03:05 AM

Título: Calcular el current time
Publicado por: iaorengo en 21 Noviembre 2011, 03:05 AM
Buenas,

Estuve buscando por Google por más de 5 hs una solución o algo que me haga entender como hacer. Lo peor de todo es que considero esto como algo muy facil pero no me sale.

El tema es el siguiente, si bien se pueden calcular fechas del año de los picapiedras hasta los supersónicos con todos los chiches y muy facil, no encontré forma de calcular o contar desde 0 el "current time" o "uptime".
¿Cómo se puede hacer para comenzar en [00/00/00 - 00:00:00] y que cada 1 segundo me sume 1?

Para poder calcular el tiempo transcurrido. Lo más parecido a esto que encontré es un cronómetro, pero la verdad, es muy poco optimo y además, sólo cuenta hasta horas.

Espero me puedan ayudar y así además queda para todos los que lo necesitan.

Gracias y abrazo. :)
Título: Re: Calcular el current time
Publicado por: seba123neo en 21 Noviembre 2011, 03:14 AM
el uptime se puede calcular con apis, aca un ejemplo simple.

Código (vb) [Seleccionar]
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
MsgBox getTimePassed
End Sub

Public Function getTimePassed() As String
Dim lngHour As Long
Dim lngMinute As Long
Dim lngSeconds As Long
lngHour = Int(GetTickCount / 1000 / 60 / 60)
lngMinute = Int((GetTickCount / 1000 / 60)) - lngHour * 60
lngSeconds = Int((GetTickCount / 1000)) - lngMinute * 60 - lngHour * 3600
getTimePassed = Trim(Str(lngHour) & ":" & sGetWideTimeString(lngMinute) & ":" & sGetWideTimeString(lngSeconds)) & vbNullChar
End Function

Public Function sGetWideTimeString(ByVal btInputNumb As Byte) As String
Dim sTemp As String
sTemp = Trim(Str(btInputNumb))
If Len(sTemp) = 1 Then sTemp = "0" & sTemp
sGetWideTimeString = sTemp
End Function


saludos.
Título: Re: Calcular el current time
Publicado por: Elemental Code en 22 Noviembre 2011, 02:01 AM
The sister checker al ataque!!

http://www.mediafire.com/?4m3z0xa0lwrqnsa

Muestra el tiempo desde que se prendio la pc.
Lo usaba para ver cuanto tiempo pasaba mi hermana en la pc.

No hace falta abrirlo al iniciar sesion o prender la pc. Al abrirlo te muestra el tiempo desde que se prendio.
Título: Re: Calcular el current time
Publicado por: iaorengo en 22 Noviembre 2011, 20:32 PM
Muchas gracias, ambos funcionan de 10!

Una sóla duda no más al respecto:
¿Cómo se lo reinicia? Porque tengan en cuenta que es para hacer el uptime de un servidor y, si bien espero que esté siempre on, algunas veces va a reiniciarce. :P


Saludos.
Título: Re: Calcular el current time
Publicado por: BlackZeroX en 22 Noviembre 2011, 20:36 PM
Se reinicia cuando reinicias el PC... claramente lo dijo Elemental Code

Dulces Lunas!¡.
Título: Re: Calcular el current time
Publicado por: raul338 en 22 Noviembre 2011, 22:32 PM
O cuando llegue al limite, que mas o menos eran a los 13 dias segun me acuerdo :P
Título: Re: Calcular el current time
Publicado por: iaorengo en 23 Noviembre 2011, 05:18 AM
Ah... entonces creo que no me va a servir.

Yo quiero simplemente un contador de Horas:Minutos:Segundos. No tiene nada que ver con el arranque de la PC o sesión. Y que se pueda reinciar cuando lo desee.
Título: Re: Calcular el current time
Publicado por: Sanlegas en 23 Noviembre 2011, 10:10 AM
Lo puedes modificar para que se reestablesca

Código (vb) [Seleccionar]
Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim acTime  As Long

Public Function getTimePassed() As String
Dim timeActual As Long
Dim lngHour As Long
Dim lngMinute As Long
Dim lngSeconds As Long

timeActual = GetTickCount - acTime

lngHour = Int(timeActual / 1000 / 60 / 60)
lngMinute = Int((timeActual / 1000 / 60)) - lngHour * 60
lngSeconds = Int((timeActual / 1000)) - lngMinute * 60 - lngHour * 3600
getTimePassed = Trim(Str(lngHour) & ":" & sGetWideTimeString(lngMinute) & ":" & sGetWideTimeString(lngSeconds)) & vbNullChar
End Function

Public Function sGetWideTimeString(ByVal btInputNumb As Byte) As String
Dim sTemp As String
sTemp = Trim(Str(btInputNumb))
If Len(sTemp) = 1 Then sTemp = "0" & sTemp
sGetWideTimeString = sTemp
End Function

Public Function Reset()
acTime = GetTickCount
End Function


En un formulario:
Código (vb) [Seleccionar]
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Form_Load()
MsgBox getTimePassed
Module1.Reset
MsgBox getTimePassed
Sleep 3000
MsgBox getTimePassed
Module1.Reset
MsgBox getTimePassed
End Sub
Título: Re: Calcular el current time
Publicado por: Elemental Code en 24 Noviembre 2011, 00:23 AM
Pone un timer con interval de 1000

Código (vb) [Seleccionar]
Dim xd As Date

Private Sub Form_Load()
xd = 0
'me evade la razon, pero arranca a las 12:00:00
End Sub

Private Sub Timer1_Timer()
xd = xd + "00:00:01"
Debug.Print xd
End Sub


;-) ;-)

RUSTICO!
Título: Re: Calcular el current time
Publicado por: seba123neo en 25 Noviembre 2011, 02:52 AM
Cita de: iaorengo en 23 Noviembre 2011, 05:18 AM
Ah... entonces creo que no me va a servir.

Yo quiero simplemente un contador de Horas:Minutos:Segundos. No tiene nada que ver con el arranque de la PC o sesión. Y que se pueda reinciar cuando lo desee.

dijiste "uptime", eso significa desde que inicio la pc...

usa un Timer comun o si queres hacerlo mas copado, con las api de Timers.