Reloj Digital (Timer)

Quiero mostrarles hoy una forma simple y sencilla de crear en visual basic .net un reloj digital. Lo haremos utilizando un label y un componente Timer.

El formulario debería tener una apariencia similar a la de la siguiente imagen>

Para este ejemplo donde solo mostraremos la hora, cambiaremos la fuente del control label para darle más importancia. Yo estoy usando fuente Tahoma tamaño 28.

Ahora veamos las propiedades del componente timer. Para que se ejecute el codigo del evento Tick del componente timer, este tiene que tener la propiedad enable en True. Y el codigo que ingresemos se va a ejecutar cada n ticks. La cantidad de ticks de n se las indicamos con la propiedad interval en milisegundo. Por lo tanto si colocamos dicha propiedad en 1000 ticks, el código se ejecutará cada 1 segundo.

Ahora veamos el código, es muy sencillo:

Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = Date.Now.ToLongTimeString
End Sub

Solo resta ejecutar (F5) la aplicación y tendremos nuestro reloj digital como se muestra en la siguiente imagen>

Si eres asiduo lector de este blog, sabrás que todo el código de los ejemplos siempre pretende ser muy sencillo y que tu tienes a partir de estos ejemplos la posibilidad de mejorarlo, complementarlos y adaptarlos para usarlos en tus aplicaciones.

Como siempre, espero que te sea útil.



32 Responses to “Reloj Digital (Timer)”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Quiero mostrarles hoy una forma simple y sencilla de crear en visual basic .net un reloj digital. Lo haremos utilizando un label y un componente Timer. El formulario debería tener una apariencia similar a la de la siguiente i….

  2. fastmonro dice:

    el timer no es necesario, una forma mas sencilla:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.Label1.Text = Format(Now, “hh:mm:ss tt”)
    End Sub

    • Eliseo dice:

      fastmonro:

      gracias por el aporte, pero lo único que haces con eso es “mostrar” en una etiqueta la hora en que se cargó el formulario (ya que lo llamas desde el evento Load). Permiteme decirte que para lograr la funcionalidad de un reloj, o sea, que muestre la hora actual “todo el tiempo” es necesario el componente Timer, sino no sería un reloj… solo mostrarías la hora de un momento determinado.

  3. Alex dice:

    Muy bueno su aporte!!! Felicidades!!

  4. Laharl dice:

    excelente aporte hermano pero el unico problema que le encuentro es que no carga al mismo tiempo que lo ejecuta uno hay que esperar cierto tiempo para que muestre el reloj solo hay que poner lo mismo en el evento load del form yo lo hice en C# por que es el que mas puedo utilizar
    private void timer1_Tick(object sender, EventArgs e)
    {
    label.Text = DateTime.Now.ToShortTimeString();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    label.Text = DateTime.Now.ToShortTimeString();
    }
    y una cosa mas alguien sabe como mostrar el nombre del archivo guardado o abierto en la barra de titulo e intentado de varias maneras y no encuentro como hacerlo no importa si es en VB o C#.

    salu2

    • batero_loco_xxx dice:

      tienes razon pero es por qu etienes que esperar un segundo que es cuando se ejecuta el codigo tic del reloj (recuerda es cada 1 segundo es decir un segundo despues del load) te digo un truco mucho mas sencillo para qu eno te hagas bolas, pon el mismo codigo que pones en el tic del reloj en el form load de tu formulario asi:

      private sub form1_load ….

      Me.Label12.Text = Format(Now, “hh:mm:ss tt”)
      end sub

      y se acabo tu dilema

      Saludos

  5. juan dice:

    eliseo….que bien gracias por ayudarnos con estos codigos sencillos y la buena explicacion a nosotros los que apenas empezamos con lo de programar…….tenes razon con el timer es muy necesario para que se actualize..

    Gracias.

  6. hola dice:

    Buen aporte!!

  7. henoch dice:

    Buena me gusto la solución

  8. danilo dice:

    amigos no miro el codigo para el tick del timer?? ayudenme por favor

  9. Neobones dice:

    Hola, yo use el Timer y como dice arriba, en la propiedad Enable tiene q ir en True, y el intervale = 1000….ahora…hacen doble click en el objeto Timer1 y les llevara al evento Tick…dentro ponen el codigo algo asi…

    Public Class frmPrincipal
    Private Sub Tiempo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tiempo.Tick
    txtHora.Text = Format(Now, “hh:mm:ss tt”)
    txtFecha.Text = Date.Now.Date
    End Sub
    End Class

    en mi caso io le cambie el nombre del objeto, en ves de Timer1 le puse Tiempo…
    espero q les ayude a los nuevos programadores.

  10. AlvaroPucela dice:

    Neobones tu función es cojonuda! va de puta madre.

  11. Callejero dice:

    Buenas amigos, he intentado varias veces como me dicen pero al correr el programa el reloj no se va actualizando cada segundo, que debo hacer para que en corrida se vaya actualizando, ya la propiedad de interval la coloque en 1000, sin embargo no se actualiza.
    espero me pueda ayudar.
    saludos.

    • batero_loco_xxx dice:

      aunque no lo mencionas supongo que por logica habras escrito el codigo para el evento tic del reloj? que es este

      Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      Label12.Text = Format(Now, “hh:mm:ss tt”)
      End Sub

  12. FREDY dice:

    SISAS TA BN EL CODIGO Y YOP APENAS TOY APRENDIENDO Y NA.. QUISIERA SABER COMO ASERLE PARA CREAR UN CRONOMETRO SISAS…

  13. miguelito dice:

    aqui hay algo un poquito mas elaborado
    Public Class Form1
    Dim contador As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Text = “indicador del tiempo”
    Me.Label1.BorderStyle = BorderStyle.FixedSingle
    Me.Label1.TextAlign = ContentAlignment.MiddleCenter
    Me.Label1.Text = “”
    Me.Label1.BackColor = Color.Black
    Me.Label1.ForeColor = Color.Red
    Me.Label1.Visible = False
    Me.Timer1.Interval = 1000
    Me.Timer1.Enabled = True
    BackColor = Color.White
    End Sub
    Private Sub horaToolStripMenuitem_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HoraToolStripMenuItem.Click
    contador = 1
    End Sub
    Private Sub fechaToolStripMenuItem_click(ByVal sende As System.Object, ByVal e As System.EventArgs) Handles FechaToolStripMenuItem.Click
    contador = 2
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Me.Label1.Visible = True
    If contador = 1 Then Label1.Text = TimeString
    If contador = 2 Then Label1.Text = My.Computer.Clock.LocalTime.Date.ToString
    End Sub
    End Class

  14. victor cordova dice:

    Gracias por el aporte, funciona a la perfeccion :D me estaba dando muchas vueltas con esto y con esas pocas lineas se soluciono…THANKS AGAIN!!!

  15. gustavo dice:

    desearia que me envies mas ejercicios con timer en especial como hacer que un elevador se mueva al piso deseado

    gracias.

  16. Angelo dice:

    El reloj funciona correcto como esta en el ejemplo, simplemente al iniciar el formulario hay que poner Timer.Start()

    Saludos.

  17. kadaj dice:

    si funka lo del timer pero mira tu task manager para que veas como se mueve de recursos (dependiendo de procesador ram etc..) alguna otra forma de optimizarlo? algun me.refresh?

  18. machine dice:

    chido hijes me saco de un apuro

    tengo una duda de como ago un corte de caja con los toteles de las ventas dond el campo de la base de datos en access
    es monto_venta
    se te agradece si tienes algun ejemplo

  19. Lyn dice:

    hola soy estudiante de ingenieria en sistemas estoy haciendo un sistema para mi practica son excelentes sus aportes probe 2 ejemplos de arriba xq la verdad esto c supone es basico pero en estos casos a cualquiera c le apaga el cpu. jeje

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.Label1.Text = Format(Now, “hh:mm:ss tt”)
    End Sub

    solo me da una determinada hora no la actualiza

    y

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    LHora.Text = Date.Now.ToLongTimeString

    End Sub

    este si la propiedad de timer debe estar en true ciertisimo y un intervalo de 1000 y eso es todo funciona a la perfeccion

  20. Juan dice:

    Hola, como se hace el reloj en vez de en un web form en un web site, no consigo verlo, el evento timer.start pone que no existe.

    • Eliseo dice:

      el problema es que los eventos de los controles se ejecutan del lado del servidor, y para que eso pase tienes que hacer un reques, lo cual vuelve a cargar toda la pagina… en realidad lo tienes que hacer del lado del cliente.

      Prueba con java (javascript), con ajax o jQuery.

      Suerte

  21. pedrox dice:

    grasias por todo pero necesito que me ayuden
    necesito hacer todo esto pero en c# yo soy nuevo programdo si alguien sabe porfavor ayudenme.

  22. AloneBoy dice:

    Hola Yo tambien soy nuevo programando y queria saber si alguien sabe como hacer q un formulario a la hora q le das clic se haga transparente asi como las ventanas en el linux Opensuse 11.3

  23. Lorena dice:

    Imports ClassLibrary1
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Time.Start()
    End Sub
    Private Sub Time_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Time.Tick
    Dim horas As New Class1
    Label.Text = horas.hora()
    ‘ hora()
    End Sub
    ‘Private Sub hora()
    ‘ Label.Text = Now
    ‘ ‘MessageBox.Show(“Colocando la hora”)
    ‘ End Sub
    End Class

  24. MIAUUU dice:

    PASSABA POR AQUI BUSCANDO ESE CODIGO…SOLO AGARRE EL CODIGO DEL TIMER …Y CON UNOS ARREGLOS ME FUNCIONO A LA PERFECCION…GRACIAS MIGUELITO…

  25. Oum dice:

    Gracias por los codigos anteriores me sirvieron para poder adaptarlo al mio.
    El codigo que a mi me funcinó para obtener la hora, la cual cambiara conforme el sistema operativo lo hiciera..
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    lblHora.Text = Date.Now.ToLongTimeString
    Timer1.Start()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    lblHora.Text = Date.Now.ToLongTimeString
    End Sub

  26. Juanma! dice:

    ya tome varios ejemplos de arribaa y ninguno me funcionaa! creo que soy muy malo para esto :S necesito hacer un reloj pero ke en la pantalla se vea como van pasando los segundos oseaa algo asi! 00:00:00 ayudenmeee DD:

  27. Jdiaz dice:

    Hola a todos, pues yo he estado investigando acerca de los timer y segun he visto tengo que utilizarlos para hacer el control de un elevador hasta ahorita solo llevo la interfaz con los niveles del 1 al 10 y hacer el recorrido pero despues vuelve a comenzar desde 1 al 10 no como deberia de ser y todavia no he encontrado la forma de que funcione mediante los botones, no se si alguien le ha tocado trabajar en algo asi que me pueda ayudar o por lo menos explicar, de antemano gracias.

  28. kathy dice:

    como hago para que con el timer cuando se ejecuta me muestra una palabra en un listbox

Comentar