Comment analyser la chaîne de dates dans Go

  1. Représentation de la date et de l’heure en Go
  2. Analyser une chaîne de dates au Go

L’analyse des dates est l’une des tâches les plus courantes rencontrées dans le monde de la programmation. Go utilise une date standard, contrairement aux autres langages de programmation qui utilisent des codes pour représenter des parties d’une chaîne de date/heure. L’analyse dans le Go se fait à l’aide des fonctions Parse et Format du paquet time.

Représentation de la date et de l’heure en Go

Pour analyser la date dans Go, nous utilisons quelque chose appelé layout. Il existe une heure standard dans le Go dont nous devons nous souvenir lorsque nous analysons les dates dans le Go:

Mon Jan 2 15:04:05 MST 2006

Il s’agit du 2 janvier, 15h04:05 de 2006, UTC-0700.

Analyser une chaîne de dates au Go

Pour analyser une chaîne de date, nous passons cette présentation à la fonction time.Parse. Nous utilisons le temps réel comme format sans spécifier la date en utilisant des lettres dans la fonction parse, ce qui rend la fonction parse assez intéressante.

La fonction time.Parse prend la disposition consistant en un format de temps comme premier argument et une chaîne formatée représentant le temps comme second argument.

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)
}

Production:

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 a une constante de mise en page prédéfinie dans son paquet.

Constante Mise en page
———– ————————————-
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"

Nous pourrions utiliser la constante prédéfinie comme ci-dessus au lieu de la chaîne de mise en page pour analyser la date et l’heure.

package main

import (
    "fmt"
    "time"
)

func main() {
    timeT, _ := time.Parse(time.RFC3339, "2020-04-15T13:45:26Z")
    fmt.Println(timeT)
}

Production:

2020-04-15 13:45:26 +0000 UTC

Si nous avons un type time.Time, nous utilisons la fonction Format pour le convertir en une chaîne.

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"))

}

Production:

2020-04-14 00:00:00 +0000 UTC
14-Apr-2020

Article connexe - Go String

  • Comment convertir une chaîne de caractères en un nombre entier en Go