Maison > Article > développement back-end > Pourquoi « time.Parse() » de Go échoue-t-il avec des abréviations de fuseau horaire ambiguës ?
Time.Parse() ne peut pas traiter les informations de fuseau horaire en raison d'une abréviation ambiguë
La fonction time.Parse(), lors de la tentative d'interprétation des horodatages avec des abréviations de fuseau horaire (par exemple, "MST"), rencontre certaines limitations. Plus précisément, si le fuseau horaire abrégé n'est pas explicitement défini dans l'emplacement actuel ou s'il est ambigu (comme « IST », qui peut représenter plusieurs fuseaux horaires), la fonction suppose un emplacement de fabrication avec un décalage nul.
Ceci le comportement entraîne une divergence lors de l’analyse et de la comparaison des horodatages avec différentes abréviations de fuseau horaire. Par exemple, dans le code fourni :
t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST") t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC")
Bien qu'ils représentent des instants temporels différents dans leurs fuseaux horaires respectifs, "2018-05-11 IST" et "2018-05-11 UTC" sont analysés par heure. Parse() comme ayant le même décalage zéro. Par conséquent, leurs horodatages Unix sont identiques, indiquant la même valeur horaire.
Pour surmonter ce problème, envisagez d'utiliser une disposition horaire avec un décalage de zone numérique, tel que "-0700" pour une différence de sept heures par rapport à UTC. . Vous pouvez également envisager d'utiliser time.ParseInLocation() avec une zone fixe construite manuellement ou de charger un emplacement de fuseau horaire spécifique (par exemple, « Asie/Kolkata » pour l'IST indien). Ces approches offrent un contrôle plus précis sur la gestion des fuseaux horaires et garantissent une analyse précise de l'heure.
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!