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

Pourquoi ma conversion de fuseau horaire Go renvoie-t-elle toujours UTC ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 13:21:15536parcourir

Why Does My Go Timezone Conversion Always Return UTC?

Comprendre l'analyse et la conversion du fuseau horaire

Dans l'extrait de code Go fourni, la fonction parseAndPrint vise à analyser une heure spécifique et à l'afficher dans le fuseau horaire spécifié. Cependant, il renvoie toujours "[date] 05:00:00 0000 UTC" quel que soit le fuseau horaire choisi. Pour résoudre ce problème, une compréhension plus approfondie de l'analyse et de la conversion du fuseau horaire est essentielle.

Gestion du fuseau horaire dans Go

Lors de l'analyse d'une valeur horaire, vous le faites généralement dans votre fuseau horaire local actuel. Cependant, les abréviations de fuseau horaire sont spécifiques à l'emplacement à partir duquel vous effectuez l'analyse. Si vous devez analyser les heures de différents fuseaux horaires, vous devez spécifier explicitement l'emplacement horaire ou le décalage horaire approprié.

Le problème avec le code

Le problème dans le code fourni réside dans la ligne où l'heure du test est créée à l'aide de time.Date. Cette ligne définit le fuseau horaire de l'heure du test sur le fuseau horaire local du système, même si vous fournissez un paramètre de fuseau horaire lors de l'analyse de la chaîne d'entrée. Par conséquent, la conversion de l'heure du test en UTC entraîne toujours le même décalage que le fuseau horaire local.

Solution

Pour résoudre ce problème, vous devez créer l'heure du test en utilisant les informations de fuseau horaire fournies. Cela peut être fait en chargeant l'objet d'emplacement temporel correspondant à l'aide de time.LoadLocation, puis en analysant la chaîne d'entrée à cet emplacement à l'aide de time.ParseInLocation. L'heure résultante aura le décalage de fuseau horaire correct.

Approches alternatives

En fonction de vos besoins spécifiques, vous pouvez envisager des approches alternatives pour gérer les fuseaux horaires et les conversions :

  • Normalisez toutes les heures au format UTC en les convertissant explicitement à l'aide de la méthode UTC.
  • Travailler exclusivement avec des décalages de fuseau horaire (par exemple, "-05:00").
  • Utilisez l'interface time.Location de Go pour charger et analyser les heures dans des fuseaux horaires spécifiques.

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