Maison >développement back-end >Golang >Pourquoi l'ajout manuel du décalage UTC ne parvient-il pas à convertir avec précision l'UTC en heure locale en Go ?
Convertir l'heure UTC en heure locale en Go avec précision
Question :
Dans une tentative pour convertir l'heure UTC en heure locale pour des pays spécifiques, un programme Go rencontre des résultats incorrects malgré la prise en compte de la différence UTC. Quel pourrait être le problème sous-jacent ?
Réponse :
L'erreur se produit lorsque l'heure est calculée en ajoutant manuellement la différence UTC comme durée. Cette approche ne prend pas en compte d'autres facteurs, tels que l'heure d'été (DST).
Pour convertir avec précision l'heure UTC en heure locale, la méthode correcte consiste à utiliser time.LoadLocation. Voici comment procéder :
import "time" // A map of country names to their time zone names var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } // Function to convert UTC time to the local time of a specific country func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } // Example usage func main() { utc := time.Now().UTC().Format("15:04") hun := timeIn("Hungary").Format("15:04") eg := timeIn("Egypt").Format("15:04") fmt.Println(utc, hun, eg) }
Ce code définit d'abord un mappage des noms de pays avec leurs noms de fuseau horaire correspondants. Ensuite, time.LoadLocation est utilisé pour obtenir le fuseau horaire spécifique d’un pays donné. En appelant time.Now().In(loc), l'heure UTC actuelle est convertie en heure locale du pays souhaité, en tenant compte de l'heure d'été et d'autres facteurs.
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!