Convertisseur de fuseaux horaires, dates et heures UTC

Un appel à 9 h, une arrivée d’avion ou une entrée de journal serveur n’a de sens que si son fuseau horaire est connu. Convertissez une date et une heure entre villes pour connaître l’heure locale correspondante, vérifier le jour du calendrier et éviter les confusions liées aux changements d’heure.

Chargement de l'outil…

Pourquoi la conversion horaire dépend de la date

Un instant est un même moment partout dans le monde. L’heure locale est la façon dont l’horloge et le calendrier d’un lieu le décrivent. Quand la soirée s’achève à New York, on peut déjà être demain à Tokyo. Convertir l’heure sans la date risque de déplacer un rendez-vous au mauvais jour.

La date détermine aussi les règles applicables au fuseau. Paris et New York ont généralement six heures d’écart, mais leurs changements d’heure ont lieu à des dates différentes. À midi UTC le 15 janvier 2026, il est 13 h à Paris et 7 h à New York. Le 15 mars 2026, il est respectivement 13 h et 8 h : l’écart est de cinq heures.

Cette distinction compte pour organiser un appel international, comparer des horaires de vol, annoncer une diffusion en direct ou retrouver une erreur dans les journaux d’un serveur. Un anniversaire ou une autre date sans heure est un cas différent : c’est une date du calendrier, pas un instant à décaler selon le pays du lecteur.

Décalages UTC, GMT et fuseaux nommés

UTC sert de référence commune pour exprimer un instant. Un décalage comme UTC+05:45 signifie que l’horloge locale avance de cinq heures et 45 minutes sur UTC. Les décalages ne sont donc pas toujours des heures entières.

Un fuseau nommé, comme Europe/Paris ou America/New_York, fournit les règles permettant de connaître le décalage à une date donnée. Un décalage fixe comme +01:00 ne décrit pas les futurs changements d’heure. Préférez les fuseaux nommés pour les rendez-vous liés à un lieu ; une abréviation comme CST peut désigner plusieurs régions. La base de fuseaux horaires IANA maintient les règles utilisées par de nombreux systèmes et langages de programmation (en anglais).

Pour les conversions d’heure civile courantes, GMT et UTC indiquent tous deux un décalage nul. Cela ne signifie pas que Londres conserve ce décalage toute l’année : utilisez Europe/London pour son heure locale, y compris ses changements estivaux.

Un même instant peut correspondre à plusieurs dates

Toutes ces lectures correspondent au 15 janvier 2026 à 23 h 30 UTC :

Fuseau horaireDate localeHeure locale, format 24 hDécalage UTC
UTC15 janvier 202623:30+00:00
America/New_York15 janvier 202618:30-05:00
Europe/Paris16 janvier 202600:30+01:00
Asia/Kathmandu16 janvier 202605:15+05:45
Asia/Tokyo16 janvier 202608:30+09:00

Au format 12 heures, minuit s’écrit 12 AM et midi 12 PM. Au format 24 heures, ils s’écrivent 00:00 et 12:00. Changer le format d’affichage ne modifie ni l’instant ni le fuseau.

Changements d’heure : heures absentes et répétées

Quand les horloges avancent, certaines heures locales n’existent pas. Dans America/New_York, le 8 mars 2026 à 02:30 est une heure sautée. Quand les horloges reculent, une heure peut se produire deux fois : le 1er novembre 2026 à 01:30 dans ce même fuseau peut correspondre à 05:30 UTC ou à 06:30 UTC. Une date, une heure locale et un fuseau ne désignent donc pas toujours un instant unique.

Pour une heure répétée, précisez l’occurrence souhaitée ou son décalage UTC. Pour une heure absente, choisissez une heure locale valide. Ajouter 24 heures réelles peut aussi donner une heure différente le lendemain ; un rendez-vous récurrent à 9 h doit conserver son heure locale et son fuseau nommé. Maintenez les données de fuseaux à jour, car les gouvernements peuvent modifier les règles futures.

Convertir les fuseaux horaires en JavaScript

Partez d’un horodatage sans ambiguïté, avec Z pour UTC ou un décalage explicite. Un objet JavaScript Date représente l’instant ; Intl.DateTimeFormat l’affiche dans le fuseau choisi sans le modifier :

const instant = new Date("2026-01-15T23:30:00Z");
const formatter = new Intl.DateTimeFormat("fr-FR", {
  timeZone: "Asia/Tokyo",
  year: "numeric", month: "2-digit", day: "2-digit",
  hour: "2-digit", minute: "2-digit", second: "2-digit",
  hourCycle: "h23"
});

console.log(formatter.format(instant)); // 16/01/2026 08:30:00
console.log(instant.toISOString());     // 2026-01-15T23:30:00.000Z
console.log(instant.getTime());         // Millisecondes Unix : 1768519800000
console.log(instant.getTime() / 1000);  // Secondes Unix : 1768519800

N’ajoutez pas manuellement le décalage de Tokyo à l’horodatage : cela changerait l’instant. Ne reconvertissez pas non plus une chaîne d’affichage localisée en objet Date. Une chaîne date-heure sans décalage peut utiliser le fuseau local de l’environnement, et Intl.DateTimeFormat formate des instants sans résoudre une saisie locale arbitraire. Consultez les références MDN de Date et d’Intl.DateTimeFormat.

Convertir les fuseaux horaires en Python

Python inclut zoneinfo depuis la version 3.9. Utilisez un objet datetime avec fuseau, puis appelez astimezone() pour exprimer le même instant ailleurs :

from datetime import datetime
from zoneinfo import ZoneInfo

instant = datetime.fromisoformat("2026-01-15T23:30:00+00:00")
tokyo = instant.astimezone(ZoneInfo("Asia/Tokyo"))
new_york = instant.astimezone(ZoneInfo("America/New_York"))

print(tokyo.isoformat())     # 2026-01-16T08:30:00+09:00
print(new_york.isoformat())  # 2026-01-15T18:30:00-05:00

zoneinfo utilise les données de fuseaux du système ou le paquet tzdata, particulièrement utile sous Windows. Pour une saisie locale, vérifiez les heures absentes et résolvez explicitement les heures répétées ; ajouter un fuseau ne valide pas à lui seul une heure locale inexistante. L’attribut fold distingue les deux occurrences d’une heure répétée. La documentation officielle de zoneinfo, partiellement traduite, explique ces comportements et les sources de données ; la version anglaise fournit le texte original complet.

Enregistrer des horodatages sans perdre leur sens

Pour des journaux ou des événements passés, conservez un instant sans ambiguïté, souvent en UTC, puis convertissez-le pour l’affichage. Pour de futurs horaires locaux, gardez aussi le fuseau nommé et la date et l’heure locales prévues. Un décalage seul ne peut pas préserver un horaire local récurrent si les règles changent.

Utilisez un format d’échange explicite comme 2026-01-15T23:30:00Z plutôt qu’une chaîne dépendant des conventions locales comme 01/02/2026 09:00. La RFC 3339 définit un format d’horodatage Internet fondé sur ISO 8601 (en anglais). Si une API utilise des horodatages Unix, vérifiez si elle attend des secondes ou des millisecondes ; getTime() en JavaScript renvoie des millisecondes.

Pour mesurer la durée d’exécution de code, utilisez une horloge de temps écoulé plutôt que des conversions de dates. Notre article sur la mesure des performances JavaScript explique cette distinction.

Comment utiliser cet outil

  1. Choisissez les fuseaux de départ et d’arrivée, puis modifiez la date et l’heure d’une carte. Un nom de ville ou un identifiant IANA complet évite les abréviations ambiguës.
  2. Vérifiez les dates et décalages convertis. Si une heure se répète, choisissez son occurrence avant de copier le résultat. Cliquez sur un rectangle pour choisir cette heure dans le fuseau de sa carte, ou sur Jour/Nuit pour passer à 07:00/22:00. Le curseur parcourt la date de départ ; activez Format 24 heures pour 00:00–23:59, ou désactivez-le pour AM/PM.
  3. Utilisez Importer dans la barre d’outils pour saisir une date ISO 8601 ou un horodatage Unix. Choisissez explicitement secondes ou millisecondes, puis appliquez la valeur. Cliquer sur un libellé ou une valeur des Horodatages standards ouvre Importer avec ce format et cette valeur prêts à modifier.
  4. Copiez Heures converties pour inclure les dates et heures locales et la liste Horodatages standards (ISO 8601 UTC, secondes et millisecondes Unix), ou copiez le lien de partage. Le lien conserve l’instant, les fuseaux et le format horaire. Ces valeurs sont accessibles à toute personne disposant du lien ; le fragment peut rester dans l’historique et être lu par les scripts de la page, bien qu’il ne soit pas envoyé dans la requête HTTP de la page.

Les conversions couvrent 1900–2100 à la seconde entière, selon les données de fuseaux du navigateur. Les secondes intercalaires et les fractions de seconde sont exclues. Les données peuvent être incomplètes pour les dates anciennes ou obsolètes pour les règles futures.

Vos données restent dans votre navigateur

Cet outil traite vos données sur votre appareil. Le texte, les fichiers ou les mots de passe saisis et les résultats produits ne sont envoyés ni à nos serveurs ni à un autre serveur.

Le chargement des pages et de leurs ressources génère des requêtes. En production, les pages chargent aussi Google Tag Manager, Cloudflare Web Analytics et les publicités AdSense ; le code des outils ne transmet ni vos saisies ni vos résultats aux services de mesure ou de publicité. Consultez notre politique de confidentialité.

Pour examiner les requêtes pendant l'utilisation de l'outil, ouvrez les outils de développement de votre navigateur, puis l'onglet Réseau. Faites un essai avec des données fictives.

Consultez Comment examiner les requêtes réseau dans Chrome, Firefox, Edge et Safari.

L'offre Premium arrive bientôt

Un abonnement Premium facultatif permettant de supprimer les publicités est prévu. Les abonnements ne sont pas encore disponibles.

Vous pouvez continuer à utiliser nos outils gratuits sans compte.