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 :
const format = "2006 01 02 15:04 -0400" tn, _ := time.Parse(format, date)
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!