Maison >développement back-end >Golang >Pourquoi « time.Parse » dans Go ne parvient-il pas à convertir une chaîne en une instance « time.Time » lorsque le fuseau horaire est impliqué ?
Comprendre le comportement time.Parse
Lors de l'utilisation de la méthode Parse dans le package time de Go pour convertir une chaîne en une instance time.Time, c'est Il est important de prendre en compte le fuseau horaire et de fournir une chaîne de format appropriée. Le code suivant ne parvient pas à convertir une chaîne en time.Time comme prévu, en raison d'une gestion incorrecte du fuseau horaire :
import ( "fmt" "time" ) func main() { const longForm = "2013-05-13T18:41:34.848Z" t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") fmt.Println(t) }
Ce code imprime 0001-01-01 00:00:00 0000 UTC au lieu de l'heure attendue. 2013-05-13 01:41:34.848 0000 UTC.
Solution : Spécifiez la chaîne de format correcte
Le comportement incorrect est dû à une chaîne de format incorrecte. Le longForm doit être défini pour correspondre au format de la chaîne d'entrée :
const longForm = "2006-01-02 15:04:05 -0700"
Cette chaîne de format correspond au format de la chaîne d'entrée : 2013-05-13 18:41:34.848 -0700 PDT.
Code mis à jour :
import ( "fmt" "log" "time" ) func main() { const longForm = "2006-01-02 15:04:05 -0700" t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") if err != nil { log.Fatal(err) } fmt.Println(t) }
Avec la chaîne de format correcte, le code affichera désormais l'heure prévue : 2013-05-13 01:41:34.848 0000 UTC .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!