Vous essayez de comparer deux instances temporelles, mais le résultat n'est pas celui que vous attendez.
Vous disposez de deux fonctions GenerateWIB et GenerateUTC pour changer le fuseau horaire d’une heure donnée. GenerateUTC fonctionne parfaitement, contrairement à GenerateWIB.
Le code pour comparer les deux heures est :
<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>
Le résultat de cette comparaison est toujours faux, même si les deux heures sont les mêmes. pareil.
Le problème est que vous utilisez l'opérateur == pour comparer deux instances time.Time. L'opérateur == compare les valeurs de tous les champs des deux structures, y compris le champ Emplacement.
Le champ Emplacement spécifie le fuseau horaire de l'instance horaire. Dans votre cas, expect a un fuseau horaire wib, tandis que res a un fuseau horaire UTC. C'est pourquoi l'opérateur == renvoie false.
Pour comparer correctement deux instances time.Time, vous devez utiliser la méthode Equal. La méthode Equal compare les valeurs des champs wall et ext des deux structures, qui représentent l'instant temporel. La méthode Equal ignore le champ Localisation.
Voici le code corrigé :
<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.Equal(expect) { fmt.Printf("WIB Expect %+v, but get %+v", expect, res) }</code>
Maintenant, le résultat de la comparaison est vrai, ce qui est le résultat correct.
La méthode Equal est plus précise que l'opérateur == lors de la comparaison de deux instances time.Time. La méthode Equal prend en compte uniquement l'instant temporel, tandis que l'opérateur == prend également en compte le fuseau horaire.
En général, vous devez utiliser la méthode Equal pour comparer deux instances time.Time, sauf si vous avez une raison spécifique de le faire. utilisez l'opérateur ==.
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!