Maison >développement back-end >Golang >Pourquoi « time.Parse » de Go n'utilise-t-il pas correctement les informations de fuseau horaire ?

Pourquoi « time.Parse » de Go n'utilise-t-il pas correctement les informations de fuseau horaire ?

DDD
DDDoriginal
2024-11-24 07:38:10872parcourir

Why Doesn't Go's `time.Parse` Use Timezone Information Correctly?

Time.Parse n'utilise pas les informations de fuseau horaire

Q : Pourquoi time.Parse n'utilise-t-il pas les informations de fuseau horaire ? Il doit produire des valeurs horaires distinctes pour différents fuseaux horaires.

Dans l'exemple de code fourni, la fonction time.Parse est utilisée pour analyser deux horodatages, "2018-05-11 IST" et "2018-05". -11 UTC", en utilisant la disposition "2006-01-02 MST". Cependant, le résultat montre que les deux horodatages donnent la même heure Unix :

Output:
1525996800
1525996800

Cela n'a pas de sens car IST et UTC ont des décalages horaires différents.

R : Abréviations de fuseau horaire ambiguës et décalage zéro

La racine de ce problème réside dans la gestion des abréviations de fuseau horaire ambiguës dans le temps.analyser. Plus précisément, en l'absence de décalage connu pour l'abréviation de fuseau horaire donnée, time.Parse suppose un fuseau horaire avec la même abréviation et un décalage nul.

Dans l'exemple fourni, "IST" est une abréviation ambiguë qui pourrait faire référence à plusieurs fuseaux horaires (Inde, Irlande, Israël, etc.). Par conséquent, time.Parse l'interprète comme un fuseau horaire fabriqué avec un décalage de zéro, ignorant ainsi le décalage horaire réel entre IST et UTC.

Solution : utilisation de décalages horaires numériques ou Time.ParseInLocation()

Pour résoudre ce problème, il existe plusieurs options disponible :

  • Utiliser des décalages de fuseau horaire numériques : Cela implique de spécifier le décalage de fuseau horaire directement dans la chaîne de mise en page, garantissant ainsi la précision.
  • Utiliser time.ParseInLocation (): Cette fonction vous permet de spécifier un fuseau horaire personnalisé lors de l'analyse de l'heure, éliminant ainsi l'ambiguïté problème.
  • Chargez le fuseau horaire souhaité : En chargeant le fuseau horaire spécifique (par exemple, "Asie/Kolkata" pour IST) et en utilisant time.ParseInLocation(), vous pouvez vous assurer que l'heure est analysé en utilisant le décalage correct.

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