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