Maison > développement back-end > Golang > Pourquoi « time.Parse » de Go ignore-t-il les informations de fuseau horaire ?

Pourquoi « time.Parse » de Go ignore-t-il les informations de fuseau horaire ?

Linda Hamilton
Libérer: 2024-11-21 20:02:15
original
919 Les gens l'ont consulté

Why Does Go's `time.Parse` Ignore Timezone Information?

Pourquoi Time.Parse n'utilise pas les informations de fuseau horaire

La fonction time.Parse est conçue pour analyser une chaîne temporelle et générer une objet time.Value. Cependant, il ne prend pas en compte les informations de fuseau horaire. Ce comportement peut conduire à des résultats inattendus lors de l'analyse de chaînes horaires qui incluent des abréviations de fuseau horaire.

Considérez l'extrait de code suivant :

import "time"

func main() {
    t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST")
    if err != nil {
        return
    }
    t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC")
    if err != nil {
        return
    }
    fmt.Println(t.Unix())
    fmt.Println(t2.Unix())
}
Copier après la connexion

Ce code analyse deux chaînes horaires, "2018-05-11 IST" et "2018-05-11 UTC", et imprime les horodatages Unix des valeurs temporelles résultantes. Cependant, le résultat est surprenant :

1525996800
1525996800
Copier après la connexion

Les deux horodatages sont identiques, même si les chaînes horaires font référence à des fuseaux horaires différents. En effet, time.Parse ignore les informations de fuseau horaire lors de l'analyse d'une chaîne horaire. Il traite la chaîne horaire comme si elle se trouvait dans le fuseau horaire local et ne s'ajuste à aucun décalage horaire.

Pour résoudre ce problème, vous pouvez utiliser l'une des approches suivantes :

  • Utilisez une présentation temporelle qui inclut un décalage de zone numérique. Par exemple, vous pouvez utiliser la présentation suivante : "2006-01-02 -0700". Cette disposition spécifie le décalage du fuseau horaire (-0700 dans ce cas) dans le cadre de la chaîne horaire.
  • Utilisez la fonction time.ParseInLocation. Cette fonction prend un argument de localisation, qui spécifie le fuseau horaire à utiliser lors de l'analyse de la chaîne horaire.
  • Créez un fuseau horaire personnalisé à l'aide de time.FixedZone. Cela vous permet de spécifier le décalage horaire et l'abréviation d'un fuseau horaire particulier. Vous pouvez ensuite utiliser ce fuseau horaire personnalisé comme argument de la fonction time.Parse.

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