¿Cómo parsear fechas en Go?
Go soporta diferentes tipos de formatos para imprimir la fecha.
Formato | Salida |
---|---|
ANSIC | Wed Feb 2 10:15:06 2019 |
UnixDate | Wed Feb 2 10:15:06 MST 2019 |
RubyDate | Wed Feb 02 10:15:06 -0700 2019 |
RFC822 | 02 Feb 06 15:04 MST |
RFC822Z | 02 Feb 06 15:04 -0700 |
RFC850 | Wedday, 02-Feb-06 10:15:06 MST |
RFC1123 | Wed, 02 Feb 2019 10:15:06 MST |
RFC1123Z | Wed, 02 Feb 2019 10:15:06 -0700 |
RFC3339 | 2019-01-02T10:15:06Z07:00 |
RFC3339Nano | 2019-01-02T10:15:06.999999999Z07:00 |
Ejemplo de un programa para parsear una fecha en Go
En el siguiente programa vamos a parsear una fecha en formato RFC3339.
package main
import (
"fmt"
"log"
"time"
)
func main() {
fechaComoString := "2015-05-15T10:12:11+06:00"
fecha, err := time.Parse(time.RFC3339, fechaComoString)
if err != nil {
log.Fatal(err)
}
fmt.Printf("El tipo es: %T \n", fecha)
fmt.Printf("La fecha es: %v \n", fecha)
}
Descripción del programa para parsear una fecha en Go
Tenemos una string con el formato de fecha RFC3339.
fechaComoString := "2015-05-15T10:12:11+06:00"
Convertimos el string en una fecha utilizando la función Parse del paquete time.
fecha, err := time.Parse(time.RFC3339, fechaComoString)
Si la fecha no puede parsearse, se imprime el error.
if err != nil {
log.Fatal(err)
}
De otra forma imprimimos el tipo y valor de fecha.
fmt.Printf("El tipo es: %T \n", fecha)
fmt.Printf("La fecha es: %v \n", fecha)
Al ejecutar el programa, obtendremos en la salida el string convertido a fecha.
$ go run main.go
El tipo es: time.Time
La fecha es: 2015-05-15 10:12:11 +0600 +0600