Time, Parseo de fechas

¿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