Hummm…

El otro día jugando con un Cubo Rubik me quise tomar el tiempo de cuanto me demoraba, para esto solía usar el cronómetro del celular… jejeje… pero en un momento quise tener uno en mi portatil… encontré en internet unos instaladores, pero me propuse hacer uno yo mismo… jejeje nada del otro mundo.

Lo primero fue como sumar y restar Horas… para eso encontré el tipo de datos TimeSpan que me sirvió notablemente para esto.

Puedes descargar el ejemplo completo desde aqui —>> Download CLAVE ZIP: msmvps.com/jvargas

Para comenzar cree un formulario windows con un label, dos botones y un control timer.

El formulario es el siguiente:

El label se llama lblTiempo, el boton “>” se llama btnIniciarPausar, el botón “O” se llama btnDetener y el timer se llama tmrTiempo.

Ahi les adjunto los eventos correspondientes..

Dim FechaInicio As DateTime, _
TiempoActivo As TimeSpan

Private Sub btnIniciarPausar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIniciarPausar.Click

If btnIniciarPausar.Text = “||” Then
‘PAUSA
btnIniciarPausar.Text = “>”
tmrTiempo.Stop()
Else
‘REINICIAR
Dim FechaActiva As DateTime
FechaActiva = lblTiempo.Text
TiempoActivo = FechaActiva.TimeOfDay

FechaInicio = Now
btnDetener.Enabled = True
btnIniciarPausar.Text = “||”
tmrTiempo.Start()
End If

End Sub

Private Sub btnDetener_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDetener.Click
btnDetener.Enabled = False
btnIniciarPausar.Text = “>”
lblTiempo.Text = “00:00:00.000”
tmrTiempo.Stop()
End Sub

Private Sub tmrTiempo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrTiempo.Tick

Dim Tiempo As TimeSpan

Tiempo = Now.Subtract(FechaInicio).Duration
Tiempo += TiempoActivo

lblTiempo.Text = Microsoft.VisualBasic.Right(“00” & Tiempo.Hours, 2) & “:” & _
Microsoft.VisualBasic.Right(“00” & Tiempo.Minutes, 2) & “:” & _
Microsoft.VisualBasic.Right(“00” & Tiempo.Seconds, 2) & “.” & _
Microsoft.VisualBasic.Right(“000” & Tiempo.Milliseconds, 3)

Me.Refresh()

End Sub


Espero les sirva este ejemplo en el uso de TimeSpan al igual que Datetime.

Fuente: http://msmvps.com/blogs/jvargas/archive/2007/12/31/timespan_5F00_Cronometro.aspx