Exploración del Tiempo y la Duración en Go

Beginner

This tutorial is from open-source community. Access the source code

Introducción

Este laboratorio tiene como objetivo probar su comprensión del soporte de Go para el tiempo y la duración.

Tiempo

El código siguiente contiene ejemplos de cómo trabajar con el tiempo y la duración en Go. Sin embargo, algunas partes del código están faltando. Su tarea es completar el código para que funcione como se espera.

  • Conocimientos básicos del lenguaje de programación Go.
  • Familiaridad con el soporte de Go para el tiempo y la duración.
$ go run time.go
2012-10-31 15:50:13.793654 +0000 UTC
2009-11-17 20:34:58.651387237 +0000 UTC
2009
November
17
20
34
58
651387237
UTC
Tuesday
true
false
false
25891h15m15.142266763s
25891.25420618521
1.5534752523711128e+06
9.320851514226677e+07
93208515142266763
2012-10-31 15:50:13.793654 +0000 UTC
2006-12-05 01:19:43.509120474 +0000 UTC

## A continuación, veremos la idea relacionada del tiempo
## en relación con la época Unix.

A continuación está el código completo:

// Go ofrece un amplio soporte para tiempos y duraciones;
// aquí hay algunos ejemplos.

package main

import (
    "fmt"
    "time"
)

func main() {
    p := fmt.Println

    // Comenzaremos obteniendo la hora actual.
    ahora := time.Now()
    p(ahora)

    // Puedes construir una estructura `time` proporcionando
    // el año, mes, día, etc. Los tiempos siempre están
    // asociados con una `Location`, es decir, una zona horaria.
    entonces := time.Date(
        2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
    p(entonces)

    // Puedes extraer los diversos componentes del valor de tiempo
    // como se espera.
    p(entonces.Year())
    p(entonces.Month())
    p(entonces.Day())
    p(entonces.Hour())
    p(entonces.Minute())
    p(entonces.Second())
    p(entonces.Nanosecond())
    p(entonces.Location())

    // El `Weekday` de lunes a domingo también está disponible.
    p(entonces.Weekday())

    // Estos métodos comparan dos tiempos, probando si el
    // primero ocurre antes, después o al mismo tiempo
    // que el segundo, respectivamente.
    p(entonces.Before(ahora))
    p(entonces.After(ahora))
    p(entonces.Equal(ahora))

    // El método `Sub` devuelve una `Duration` que representa
    // el intervalo entre dos tiempos.
    diferencia := ahora.Sub(entonces)
    p(diferencia)

    // Podemos calcular la duración en
    // varios unidades.
    p(diferencia.Hours())
    p(diferencia.Minutes())
    p(diferencia.Seconds())
    p(diferencia.Nanoseconds())

    // Puedes usar `Add` para avanzar un tiempo en una
    // duración dada, o con un `-` para retroceder en una
    // duración.
    p(entonces.Add(diferencia))
    p(entonces.Add(-diferencia))
}

Resumen

Este laboratorio probó su capacidad para trabajar con el soporte de Go para el tiempo y la duración. Aprendió cómo extraer los diversos componentes de un valor de tiempo, comparar dos tiempos, calcular la duración de un intervalo y avanzar un tiempo en una duración dada.