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é ?

Pourquoi « time.Parse » dans Go ne parvient-il pas à convertir une chaîne en une instance « time.Time » lorsque le fuseau horaire est impliqué ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 00:50:03201parcourir

Why does `time.Parse` in Go fail to convert a string to a `time.Time` instance when timezone is involved?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn