Comprendre l'analyse du fuseau horaire dans Go
L'analyse des codes de fuseau horaire dans Go implique la conversion d'une représentation sous forme de chaîne d'un fuseau horaire en une *heure correspondante .Objet de localisation. Toutefois, dans certains scénarios, le résultat analysé peut ne pas refléter avec précision le fuseau horaire souhaité. Cet article explore un problème courant dans l'analyse des fuseaux horaires et propose des solutions.
Formulation du problème
Considérez le code suivant :
package main import ( "fmt" "time" ) func main() { now := time.Now() parseAndPrint(now, "BRT") parseAndPrint(now, "EDT") parseAndPrint(now, "UTC") } func parseAndPrint(now time.Time, timezone string) { test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone)) if err != nil { fmt.Println(err) return } test = time.Date( now.Year(), now.Month(), now.Day(), test.Hour(), test.Minute(), test.Second(), test.Nanosecond(), test.Location(), ) fmt.Println(test.UTC()) }
Lors de l'exécution ce code, la sortie affiche toujours "[date] 05:00:00 0000 UTC", quel que soit le fuseau horaire spécifié. En effet, le code analyse l'heure à l'emplacement actuel, puis définit explicitement le fuseau horaire sur UTC.
Solution : utiliser time.Location
Pour gérer correctement Pour l'analyse du fuseau horaire, nous devons utiliser le type *time.Location. Nous pouvons charger un emplacement à partir de la base de données de fuseau horaire local en utilisant time.LoadLocation, puis analyser l'heure en utilisant time.ParseInLocation. Voici le code modifié :
package main import ( "fmt" "time" ) func main() { now := time.Now() parseAndPrint(now, "BRT") parseAndPrint(now, "EDT") parseAndPrint(now, "UTC") } func parseAndPrint(now time.Time, timezone string) { location, err := time.LoadLocation(timezone) if err != nil { fmt.Println(err) return } test, err := time.ParseInLocation("15:04:05 MST", "05:00:00", location) if err != nil { fmt.Println(err) return } fmt.Println(test) }
Maintenant, le code analysera correctement l'heure spécifique au fuseau horaire et imprimera le résultat dans le format de fuseau horaire souhaité.
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!