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 ?

Pourquoi l'ajout manuel du décalage UTC ne parvient-il pas à convertir avec précision l'UTC en heure locale en Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-26 06:25:11156parcourir

Why Does Manually Adding UTC Offset Fail to Accurately Convert UTC to Local Time in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn