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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-26 12:10:14303parcourir

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)

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

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)
  1. Utilisez ParseInLocation() pour spécifier le fuseau horaire :
aloc, _ := time.LoadLocation("America/New_York")
tn, _ := time.ParseInLocation(format, date, aloc)

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!

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