Maison >développement back-end >Golang >Pourquoi mon analyse de fuseau horaire Go renvoie-t-elle toujours UTC ?

Pourquoi mon analyse de fuseau horaire Go renvoie-t-elle toujours UTC ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 01:23:14742parcourir

Why Does My Go Timezone Parsing Always Return UTC?

Comprendre l'analyse des fuseaux horaires dans Go

Dans Go, la gestion des fuseaux horaires peut parfois conduire à un comportement inattendu. Examinons un problème courant rencontré lors de l'analyse des fuseaux horaires à l'aide de formats d'heure personnalisés.

Problème : sortie de fuseau horaire cohérente quelle que soit l'entrée

L'extrait de code fourni définit une fonction parseAndPrint qui vise à analyser une heure représentée. comme "05:00:00" dans un fuseau horaire spécifique, puis imprimez le résultat en UTC. Cependant, l'heure résultante reste inchangée, quel que soit le fuseau horaire spécifié, affichant à chaque fois "[date] 05:00:00 0000 UTC".

Comprendre le problème

La cause profonde réside dans comment l'heure est analysée à l'aide de time.Parse dans la fonction parseAndPrint. L'heure actuelle est récupérée avec time.Now() et passée comme argument à time.Parse, qui interprète la chaîne d'entrée en fonction de l'abréviation de fuseau horaire spécifiée.

Cependant, l'analyse est effectuée dans le fuseau horaire local du système. , pas le fuseau horaire souhaité spécifié. Cet écart entraîne une analyse incorrecte et une sortie cohérente en UTC, quel que soit le fuseau horaire prévu.

Solution : gestion correcte du fuseau horaire

Pour gérer correctement les fuseaux horaires, il est crucial d'analyser la représentation sous forme de chaîne du heure dans le fuseau horaire spécifié en utilisant une instance time.Location correcte. Cela implique les étapes suivantes :

  • Chargez le fuseau horaire souhaité à partir de la base de données de fuseaux horaires à l'aide de time.LoadLocation.
  • Créez un objet time.Time pour ce fuseau horaire à l'aide de time.ParseInLocation.
  • Convertissez l'heure en UTC à l'aide de test.UTC().

En incorporant ceci approche, le code analyserait et imprimerait correctement l'heure fournie dans le fuseau horaire souhaité, en tenant compte des différences horaires entre les fuseaux horaires.

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