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!