Maison > développement back-end > Golang > le corps du texte

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
Libérer: 2024-11-17 00:50:03
original
119 Les gens l'ont consulté

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)
}
Copier après la connexion

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"
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal