37 - Biblioteca estándar de Go: paquete time

Otro paquete que nos provee la biblioteca estándar de Go es para trabajar con fechas y horas.

Veamos como podemos recuperar la hora y fecha de la máquina donde se esta ejecutando el programa:

Programa: ejercicio157.go

package main

import (
    "fmt"
    "time"
)

func main() {
    var ahora time.Time
    ahora = time.Now()
    fmt.Println("Año:", ahora.Year())
    fmt.Println("Mes:", ahora.Month())
    fmt.Println("Día:", ahora.Day())    
    fmt.Println("Hora:", ahora.Hour())
    fmt.Println("Minuto:", ahora.Minute())
    fmt.Println("Segundo:", ahora.Second())
}

Debemos importar el paquete "time"

Este paquete tiene un struct llamado Time, definimos una variable llamada ahora de tipo Time:

    var ahora time.Time

Llamamos a la función Now que nos devuelve un struct de tipo Time con los datos de la fecha y hora de la computadora donde se está ejecutando el programa:

    ahora = time.Now()

Mediante una serie de métodos podemos acceder a la fecha y hora actual:

    fmt.Println("Año:", ahora.Year())
    fmt.Println("Mes:", ahora.Month())
    fmt.Println("Día:", ahora.Day())    
    fmt.Println("Hora:", ahora.Hour())
    fmt.Println("Minuto:", ahora.Minute())
    fmt.Println("Segundo:", ahora.Second())

Método Sub para identificar el tiempo pasado entre dos fechas y horas.

El struct Time tiene un método llamado Sub que nos retorna la diferencia entre dos variables de tipo Time.

Problema 1:

Imprimir la cantidad de horas que han pasado desde las 0 horas del 25 de diciembre de 2016 hasta la fecha y hora actual.

Programa: ejercicio158.go

package main

import (
    "fmt"
    "time"
)

func main() {
    navidad2016 := time.Date(2016, 12, 25, 0, 0, 0, 0, time.UTC)
    var ahora time.Time
    ahora = time.Now()
    fmt.Println(ahora)
    diferencia := ahora.Sub(navidad2016)
    fmt.Println("Cantidad de horas de diferencia:", diferencia.Hours())
}

Definimos una variable de tipo Time y mediante la función Now obtenemos la fecha y hora del sistema:

    var ahora time.Time
    ahora = time.Now()

Creamos una variable de tipo Date y le pasamos a la función Date la fecha del 25 de diciembre de 2016 a las 0 horas:

    navidad2016 := time.Date(2016, 12, 25, 0, 0, 0, 0, time.UTC)

Llamamos al método Sub del struct Date a partir del registro ahora y le pasamos la variable navidad2016:

    diferencia := ahora.Sub(navidad2016)

La variable diferencia es de tipo Date y mediante el método Hours puedo acceder a la cantidad de horas que pasaron desde la fecha de navidad hasta la fecha actual:

    fmt.Println("Cantidad de horas de diferencia:", diferencia.Hours())

Cuando uno programa en Go y no recuerda las funciones del paquete time puede visitarlo en: Paquete time