Fuseaux horaires
Travailler avec des emplacements
Fuseaux horaires est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Le temps comporte un fuseau horaire
Chaque time.Time possède un fuseau horaire associé. Un même instant peut être affiché différemment selon le fuseau.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.Location())
}UTC et local
Deux fuseaux horaires intégrés sont toujours disponibles :
time.UTCpour le temps universel coordonné.time.Localpour le fuseau horaire local de la machine.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.UTC().Hour())
}Charger un fuseau nommé
time.LoadLocation(name) recherche un fuseau IANA tel que "Europe/Istanbul" ou "America/New_York".
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("UTC")
fmt.Println(loc, err)
}Convertir des fuseaux avec In
t.In(loc) renvoie le même instant affiché dans un autre fuseau. L'instant sous-jacent ne change pas : seule sa présentation est différente.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.In(time.UTC).Hour())
}Même instant, horloges différentes
Midi en UTC correspond à un seul instant, mais une personne située dans un autre fuseau voit une heure différente sur son horloge. La différence Sub entre ces instants est nulle.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
u := t.UTC()
fmt.Println(t.Sub(u))
}Créer un instant dans un fuseau
Passez un fuseau horaire comme dernier argument à time.Date pour créer directement un instant dans ce fuseau.
package main
import (
"fmt"
"time"
)
func main() {
loc, _ := time.LoadLocation("UTC")
t := time.Date(2026, 5, 30, 9, 0, 0, 0, loc)
fmt.Println(t.Hour())
}Lire le décalage du fuseau
t.Zone() renvoie l'abréviation du fuseau et son décalage par rapport à UTC, exprimé en secondes.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
name, offset := t.Zone()
fmt.Println(name, offset)
}Fuseaux fixes
Lorsque vous n'avez pas besoin de toutes les règles IANA, time.FixedZone(name, offsetSeconds) crée un fuseau simple avec un décalage constant.
package main
import (
"fmt"
"time"
)
func main() {
loc := time.FixedZone("GMT+3", 3*3600)
t := time.Date(2026, 5, 30, 12, 0, 0, 0, loc)
name, off := t.Zone()
fmt.Println(name, off)
}Formater dans différents fuseaux
Effectuez la conversion avec In avant le formatage pour afficher un horodatage dans le fuseau du lecteur.
package main
import (
"fmt"
"time"
)
func main() {
loc := time.FixedZone("GMT+3", 3*3600)
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.In(loc).Format("15:04 MST"))
}Stocker en UTC, afficher en local
Une règle très répandue consiste à stocker et effectuer les calculs en UTC, puis à convertir vers un fuseau local uniquement lors de l'affichage des instants aux utilisateurs. Cela évite les ambiguïtés.
package main
import (
"fmt"
"time"
)
func main() {
stored := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
loc := time.FixedZone("GMT+2", 2*3600)
fmt.Println("shown:", stored.In(loc).Hour())
}Gérer les erreurs de chargement
LoadLocation peut échouer si la base de données des fuseaux est absente ou si le nom est inconnu. Vérifiez toujours l'erreur.
package main
import (
"fmt"
"time"
)
func main() {
_, err := time.LoadLocation("Mars/Olympus")
if err != nil {
fmt.Println("unknown zone")
}
}Vérification rapide
Que modifie t.In(loc) ?
Récapitulatif : fuseaux horaires
Vous avez appris à travailler avec les fuseaux horaires :
- Chaque instant possède un fuseau horaire ;
UTCetLocalsont intégrés. - Chargez des fuseaux nommés avec
LoadLocationou construisez des décalages avecFixedZone. - Convertissez avec
In; stockez en UTC et affichez en local.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 15, 0, 0, 0, time.UTC)
loc := time.FixedZone("GMT-5", -5*3600)
fmt.Println(t.In(loc).Format("15:04 MST"))
}Questions Fréquemment Posées
La leçon « Fuseaux horaires » est-elle gratuite ?
Oui — le texte complet de « Fuseaux horaires » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fuseaux horaires » ?
Travailler avec des emplacements Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Fuseaux horaires » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Temps et durée
- Mise en forme et analyse
- Minuteries et tickers
- Fuseaux horaires