Maison  >  Article  >  développement back-end  >  Pourquoi ma conversion de fuseau horaire Go ne fonctionne-t-elle pas ? Une plongée approfondie dans la comparaison « time.Time »

Pourquoi ma conversion de fuseau horaire Go ne fonctionne-t-elle pas ? Une plongée approfondie dans la comparaison « time.Time »

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 23:48:31152parcourir

Why is my Go Time Zone Conversion Not Working? A Deep Dive into `time.Time` Comparison

Comparaison de l'heure Go : percer le mystère de la conversion du fuseau horaire

Dans le domaine de la manipulation du temps dans Go, une tâche courante consiste à convertir l'heure zones. Cependant, même les fonctions les plus simples peuvent parfois conduire à des résultats inattendus. Explorons le problème signalé par un développeur lors d'une tentative de conversion d'une heure UTC en 0700 WIB.

Le développeur a créé deux fonctions : GenerateWIB, qui convertit une heure en 0700 WIB, et GenerateUTC, qui convertit une heure en UTC. . Alors que GenerateUTC fonctionnait parfaitement, GenerateWIB échouait systématiquement. L'extrait de code fourni par le développeur est le suivant :

<code class="go">expect := time.Date(2016, 12, 12, 1, 2, 3, 4, wib)
t1 := time.Date(2016, 12, 12, 1, 2, 3, 4, time.UTC)
res := GenerateWIB(t1)
if res != expect {
    fmt.Printf("WIB Expect %+v, but get %+v", expect, res)
}</code>

La comparaison res != expect renvoyait systématiquement false, malgré l'attente selon laquelle res et expect représentaient le même moment dans le temps. Perplexe, le développeur s'est demandé s'il avait manqué quelque chose.

La réponse réside dans la nature complexe du temps de Go. La structure temporelle. Comme le révèle la documentation, l'opérateur == utilisé dans la comparaison évalue non seulement l'instant temporel, mais également l'emplacement et la lecture d'horloge monotone associés au time.Value.

Pour comparer avec précision deux valeurs temporelles, le . La méthode Equal() doit être utilisée. Cette méthode garantit que la comparaison prend en compte tous les aspects pertinents des valeurs temporelles, y compris leur heure absolue, leur emplacement et la lecture de l'horloge monotone.

En conclusion, lorsque vous travaillez avec la conversion de l'heure dans Go, il est crucial de comprendre le complexités de l’époque. Structure temporelle. En tirant parti de la méthode .Equal() pour la comparaison temporelle, les développeurs peuvent éviter des résultats inattendus et garantir des résultats précis.

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