Ruby Academy · Leçon

Fuseaux horaires

Gérez les fuseaux

Leçon 4 sur 413 étapes

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
  • getutc et getlocal convertissent 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)
Gratuit pour commencer

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.

Toutes les leçons de ce cours

  1. Classes de date et d’heure
  2. Analyse et formatage
  3. Arithmétique temporelle
  4. Fuseaux horaires
← Retour à Ruby Academy