Calcular el current time

Iniciado por iaorengo, 21 Noviembre 2011, 03:05 AM

0 Miembros y 1 Visitante están viendo este tema.

iaorengo

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. :)

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Elemental Code

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.

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

iaorengo

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.

BlackZeroX

Se reinicia cuando reinicias el PC... claramente lo dijo Elemental Code

Dulces Lunas!¡.
The Dark Shadow is my passion.

raul338

O cuando llegue al limite, que mas o menos eran a los 13 dias segun me acuerdo :P

iaorengo

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.

Sanlegas

#7
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

Elemental Code

#8
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!

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson