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:
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())
El struct Time tiene un método llamado Sub que nos retorna la diferencia entre dos variables de tipo Time.
Imprimir la cantidad de horas que han pasado desde las 0 horas del 25 de diciembre de 2016 hasta la fecha y hora actual.
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