J'ai MySQL datetime dans ma table au format standard MySQL comme

"2018-09-19 18:26:32.000000"

Et lorsque j'essaie de le convertir en temps de golang en utilisant la fonction time.parse(), j'obtiens l'erreur que

heure d'analyse "2018-09-19 18:26:32.00000": mois hors plage

J'ai essayé de rechercher en ligne et le format semble être autorisé et couramment utilisé par beaucoup pour réussir l'analyse.

Quelqu'un peut-il m'aider avec ce qui me manque? Vous trouverez ci-dessous l'extrait de code que j'utilise.

import (
    "fmt"
    "time"
)

layout := "2018-09-19 18:26:32.000000"
fmt.Println(val)
// prints 2018-09-19 18:26:32.000000
t, err := time.Parse(layout, val)
fmt.Println(fmt.Println(t.Unix()))
// prints -62135596800 
fmt.Println(err)
// prints parsing time "2018-09-19 18:26:32.000000": month out of range
1
kausal_malladi 22 sept. 2018 à 22:04

1 réponse

Meilleure réponse

Votre mise en page est erronée, elle devrait être "2006-01-02 15:04:05.000000". La documentation indique :

Parse analyse une chaîne formatée et renvoie la valeur temporelle qu'elle représente. La mise en page définit le format en montrant comment l'heure de référence, définie pour être

Lun 2 janv. 15:04:05 -0700 HNR 2006

serait interprété s'il s'agissait de la valeur ; il sert d'exemple de format d'entrée. La même interprétation sera alors faite à la chaîne d'entrée.

package main

import (
    "fmt"
    "time"
)

func main() {

    val := "2018-09-19 18:26:32.000000"
    layout := "2006-01-02 15:04:05.000000"
    t, _ := time.Parse(layout, val)
    fmt.Println(t.Unix()) // prints 1537381592
}

Les sorties

1537381592

Essayez-le ici

3
Ullaakut 22 sept. 2018 à 22:20