Fuseaux horaires
Gérez les fuseaux
Fuseaux horaires est une leçon Ruby 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 Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.
Pourquoi les fuseaux horaires sont importants
Un même instant apparaît différemment selon le lieu. Une mauvaise gestion des fuseaux horaires provoque des bugs avec un décalage d'une ou plusieurs heures ; vous devez donc préciser le fuseau utilisé par une heure.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.zone || t.utc_offset)
puts(t.utc_offset)UTC : le fuseau de référence
UTC (temps universel coordonné) est la référence mondiale. Stockez et effectuez les calculs en UTC, puis convertissez les valeurs pour les afficher.
t = Time.utc(2026, 5, 30, 9, 0, 0)
puts(t.utc?)
puts(t.hour)Heure locale
Time.now et Time.local utilisent le fuseau local de la machine. Le décalage par rapport à UTC est indiqué en secondes par utc_offset.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.utc_offset)
puts(t.utc_offset / 3600)Convertir en UTC
getutc (alias utc) renvoie le même instant exprimé en UTC. L'heure affichée change, mais l'instant reste identique.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.hour)
puts(t.getutc.hour)Convertir vers un décalage local
getlocal accepte une chaîne de décalage explicite et renvoie l'instant dans ce fuseau.
t = Time.utc(2026, 5, 30, 9, 0, 0)
istanbul = t.getlocal('+03:00')
puts(istanbul.hour)Spécifier le décalage lors de la création
Transmettez une chaîne de décalage comme dernier argument à Time.new pour fixer le fuseau lors de la création.
ny = Time.new(2026, 5, 30, 8, 0, 0, '-04:00')
puts(ny.utc_offset / 3600)
puts(ny.getutc.hour)Même instant, horloges différentes
Deux heures exprimées dans des fuseaux différents peuvent représenter exactement le même instant. La comparaison utilise l'instant sous-jacent : elles sont donc égales.
a = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
b = Time.new(2026, 5, 30, 9, 0, 0, '+00:00')
puts(a == b)Décalages dans ISO 8601
Les horodatages ISO 8601 intègrent le décalage (par exemple +03:00 ou Z pour UTC), ce qui les rend non ambigus entre les systèmes.
require 'time'
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.iso8601)
puts(t.getutc.iso8601)Analyser des chaînes avec fuseau
Time.parse respecte le décalage présent dans la chaîne d'entrée.
require 'time'
t = Time.parse('2026-05-30T12:00:00+03:00')
puts(t.utc_offset / 3600)
puts(t.getutc.hour)Bonne pratique : stocker en UTC
La méthode la plus sûre consiste à stocker en UTC, à effectuer les calculs en UTC, puis à convertir dans le fuseau de la personne utilisatrice uniquement au moment de l'affichage. Toute ambiguïté est ainsi évitée.
stored = Time.utc(2026, 5, 30, 9, 0, 0)
display = stored.getlocal('+03:00')
puts("UTC #{stored.hour} -> Local #{display.hour}")Attention à DST
Un décalage fixe comme +03:00 ignore l'heure d'été. Pour les fuseaux nommés avec des règles DST, des bibliothèques telles que le paquet tzinfo sont nécessaires ; la classe Time de base ne connaît que les décalages fixes.
t = Time.new(2026, 7, 1, 12, 0, 0, '+02:00')
puts(t.utc_offset / 3600)Vérification rapide
Quelle stratégie est recommandée pour gérer les fuseaux horaires dans une application ?
Récapitulatif : fuseaux horaires
Vous avez appris à gérer correctement les fuseaux :
- UTC est la référence mondiale
getutcetgetlocalconvertissent les valeurs sans modifier l'instant- Les décalages sont définis lors de la création ou dans les chaînes ISO 8601
- Un même instant dans des fuseaux différents est considéré comme égal
- Stockez en UTC, affichez en heure locale ; les décalages fixes ignorent DST
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)Apprends Ruby avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 29
- Leçons
- 109
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 Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fuseaux horaires » ?
Gérez les fuseaux Tu pratiques Ruby 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 Ruby Academy ?
Aucune expérience préalable n'est requise. Ruby 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 Ruby Academy ?
Oui. Chaque leçon Ruby 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.