Maison > développement back-end > Golang > le corps du texte

Pourquoi « time.Parse() » de Go interprète-t-il mal les identifiants de fuseau horaire et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-11-26 12:10:14
original
160 Les gens l'ont consulté

Why Does Go's `time.Parse()` Misinterpret Timezone Identifiers and How Can I Fix It?

Pourquoi time.Parse() n'analyse pas l'identifiant de fuseau horaire

Lors de l'analyse d'une chaîne horaire, time.Parse() de Go tente d'interpréter tout identifiant de fuseau horaire inclus en fonction de l'emplacement actuel. Si le fuseau horaire est inconnu, Parse() suppose qu'il se trouve dans un emplacement fabriqué avec l'abréviation donnée et le décalage zéro.

Considérez l'extrait de code suivant :

const format = "2006 01 02 15:04 MST"
date := "2018 08 01 12:00 EDT"
tn, _ := time.Parse(format, date)
Copier après la connexion

Ici, nous définissons une mise en page formater et analyser une chaîne de date qui inclut l'identifiant de fuseau horaire « EDT ». Cependant, lorsque nous imprimons l'heure analysée, nous obtenons :

2018-08-01 12:00:00 +0000 EDT
Copier après la connexion

Remarquez que le fuseau horaire est affiché comme " 0000 EDT " bien que EDT soit un fuseau horaire d'été avec un décalage de -0400 par rapport à UTC.

Cela se produit parce que Parse() s'appuie sur l'emplacement actuel du système, qui peut ne pas reconnaître l'abréviation « EDT ». Au lieu de cela, il l'interprète comme une zone inconnue et lui attribue un décalage zéro.

Pour éviter ce problème, nous pouvons soit :

  1. Utiliser une disposition temporelle qui spécifie explicitement le décalage horaire :
const format = "2006 01 02 15:04 -0400"
tn, _ := time.Parse(format, date)
Copier après la connexion
  1. Utilisez ParseInLocation() pour spécifier le fuseau horaire :
aloc, _ := time.LoadLocation("America/New_York")
tn, _ := time.ParseInLocation(format, date, aloc)
Copier après la connexion

En utilisant ces techniques, nous garantissons que les informations de fuseau horaire sont correctement interprétées et que l'heure analysée reflète avec précision le décalage prévu.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal