Time.Parse() de Go n'analyse pas les identifiants de fuseau horaire
Dans le code fourni, la fonction time.Parse() est utilisée pour analyser une chaîne dans un objet time.Time. Cependant, la fonction n'analyse pas l'identifiant de fuseau horaire dans la chaîne, ce qui entraîne un objet temporel qui n'est pas précis.
Selon la documentation time.Parse(), le comportement par défaut de la fonction est d'utiliser le le fuseau horaire de l'emplacement actuel lorsque vous rencontrez une abréviation de zone comme MST. Cela explique pourquoi les première et troisième lignes de la sortie sont incorrectes car l'emplacement actuel est défini sur CST. Plus précisément, la chaîne « EDT » est interprétée comme « Eastern Daylight Time » et le décalage horaire pour CST est utilisé, qui est -0500.
Pour éviter ce problème et analyser correctement les identifiants de fuseau horaire, le time.ParseInLocation () peut être utilisée. Cette fonction vous oblige à spécifier l'emplacement à utiliser lors de l'analyse de la chaîne temporelle. Dans ce cas, l'emplacement « Amérique/New_York » pourrait être utilisé pour analyser correctement l'identifiant de fuseau horaire « EDT ».
Alternativement, une chaîne de mise en page dans time.Parse() peut être modifiée pour spécifier explicitement le décalage dans la chaîne de mise en page elle-même, telle que :
format := "2006 01 02 15:04 -0400 MST" tn, _ := time.Parse(format, date)
L'utilisation de l'une de ces méthodes garantira que time.Parse() analyse avec précision les identifiants de fuseau horaire et crée un objet time.Time avec 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!