Cómo analizar la cadena de fechas en Go
![Cómo analizar la cadena de fechas en Go](/img/Go/feature-image---How-to-Parse-date-string-in-Go.webp)
El análisis sintáctico de la fecha es una de las tareas más comunes en el mundo de la programación. Go utiliza una fecha estándar, a diferencia de otros lenguajes de programación que utilizan códigos para representar partes de una cadena de fecha/hora. El análisis en Go se hace con la ayuda de las funciones Prase
y Format
en el paquete time
.
Representación de la fecha y la hora en Go
Para analizar la fecha en el Go, usamos algo llamado layout
. Hay una hora estándar en Go que necesitamos recordar mientras analizamos las fechas en Go:
Mon Jan 2 15:04:05 MST 2006
Es January 2nd, 3:04:05 PM of 2006, UTC-0700
.
Analizar la cadena de fechas en Go
Para analizar una cadena de fechas, pasamos este diseño a la función time.Parse
. Usamos el tiempo real como formato sin especificar la fecha usando letras en la función parse
, lo que hace que la función parse
sea bastante interesante.
La función time.Parse
toma un diseño que consiste en un marcador de posición de formato de tiempo como primer argumento y una cadena con formato real que representa el tiempo como segundo argumento.
package main
import (
"fmt"
"time"
)
func main() {
timeT, _ := time.Parse("2006-01-02", "2020-04-14")
fmt.Println(timeT)
timeT, _ = time.Parse("06-01-02", "20-04-14")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02", "2020-Apr-14")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05", "2020-Apr-14 Tuesday 23:19:25")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05 PM MST -07:00", "2020-Apr-14 Tuesday 11:19:25 PM IST +05:30")
fmt.Println(timeT)
}
Producción :
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
0001-01-01 00:00:00 +0000 UTC
2020-04-14 23:19:25 +0530 IST
Go tiene una constante de diseño de tiempo predefinida en su paquete.
La constante | Diseño |
---|---|
ANSIC |
"Mon Jan _2 15:04:05 2006" |
UnixDate |
"Mon Jan _2 15:04:05 MST 2006" |
RubyDate |
"Mon Jan 02 15:04:05 -0700 2006" |
RFC822 |
"02 Jan 06 15:04 MST" |
RFC822Z |
"02 Jan 06 15:04 -0700" |
RFC850 |
"Monday, 02-Jan-06 15:04:05 MST" |
RFC1123 |
"Mon, 02 Jan 2006 15:04:05 MST" |
RFC1123Z |
"Mon, 02 Jan 2006 15:04:05 -0700" |
RFC3339 |
"2006-01-02T15:04:05Z07:00" |
RFC3339Nano |
"2006-01-02T15:04:05.999999999Z07:00" |
Stamp |
"3:04PM" |
StampMilli |
"Jan _2 15:04:05.000" |
StampMicro |
"Jan _2 15:04:05.000000" |
StampNano |
"Jan _2 15:04:05.000000000" |
Podríamos usar la constante predefinida como arriba en lugar de la cadena de diseño para analizar la fecha y la hora.
package main
import (
"fmt"
"time"
)
func main() {
timeT, _ := time.Parse(time.RFC3339, "2020-04-15T13:45:26Z")
fmt.Println(timeT)
}
Producción :
2020-04-15 13:45:26 +0000 UTC
Si tenemos un tipo de time.Time
, usamos la función Format
para convertirlo en una cadena
.
package main
import (
"fmt"
"time"
)
func main() {
input := "2020-04-14"
layout := "2006-01-02"
t, _ := time.Parse(layout, input)
fmt.Println(t)
fmt.Println(t.Format("02-Jan-2006"))
}
Producción :
2020-04-14 00:00:00 +0000 UTC
14-Apr-2020
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn