IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Maîtrisez le temps avec Delphi


précédentsommairesuivant

III. Fonctionnement de l'horloge sous Windows

Tout développement de logiciel pour Windows nécessite, au préalable, une bonne connaissance de ce système d'exploitation.
Dans le cadre d'applications manipulant les dates et les heures, vous devez comprendre comment Windows gère ces données.

Contrairement à ce que peut croire un utilisateur classique, il y a une différence entre l'heure affichée dans la boîte de dialogue « Propriétés de Date/Heure » et l'heure du système, proprement dite.

Boîte de dialogue 'Propriétés de Date/Heure'

III-A. Heure « système » et heure locale

Windows gère les dates et les heures grâce à un processus relativement simple.
En effet, il prend en compte les paramètres suivants :

  • heure GMT / UTC ;
  • décalage horaire du fuseau horaire ;
  • décalage horaire de l'heure d'été.

En interne, Windows stocke l'heure GMT/UTC, il s'agit de l'heure dite "système'.
Pour afficher l'heure locale, il prend, tout d'abord, en compte le fuseau horaire et ajoute le décalage horaire prévu.
Enfin, il teste si votre région est soumise à l'heure d'été ; si c'est le cas, il ajoute le décalage horaire prévu.

Voici une représentation graphique de ce qui se passe en interne :

Image non disponible

Concrètement, Windows calcule l'heure locale pour Paris (GMT+01:00) de la manière suivante :

Période

Fonction mathématique

Hiver

Heure locale = Heure Système + Décalage fuseau horaire

Été

Heure locale = Heure Système + Décalage fuseau horaire + Décalage heure d'été

Heure « Système », heure locale, fuseau horaire, heure d'été… Toutes ces informations sont importantes, mais où et comment peut-on récupérer ces valeurs sous Windows ?

III-B. Les informations « Date/Heure » sous Windows

Les informations « Date/Heure » sont stockées dans le registre de Windows.

Lorsque l'utilisateur ouvre la boîte de dialogue « Propriétés de Date/Heure », Windows fait appel à plusieurs clés de registre que nous allons étudier une à une.

Nous verrons ensuite comment créer un petit programme Delphi permettant de récupérer ces informations.

III-B-1. Les fuseaux horaires disponibles dans le registre de Windows

Comme nous l'avons vu précédemment, Windows stocke le décalage horaire à appliquer en fonction du fuseau horaire. Dans le registre, les fuseaux horaires se nomment « Time Zones » et se situent à la clé de registre suivante :

OS

Clé de registre

Win 9x

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\

Win NT / 2000

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\

Dans cette clé de registre, vous trouverez 74 sous-clés contenant les paramètres spécifiques à chaque fuseau horaire (Time Zone) :

Clé de registre concernant le fuseau horaire de Paris

La « Time Zone » de Paris est stockée dans la sous-clé de registre « Romance Standard Time ».

Chaque clé « Time Zone » contient six sous-clés que nous allons voir en détail…

Voici le descriptif de chacune des sous-clés disponibles par clé « Time Zone » :

Display ( Affichage )

Aperçu

Clé 'Display' de la Time Zone de Paris

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Nom explicite du fuseau horaire

Exemple d'utilisation

Boîte de dialogue « Propriétés de Date/Heure » de Windows

Dlt (« Daylight » - Heure d'été)

Aperçu

Clé 'Dlt' de la Time Zone de Paris

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Nom explicite de l'heure locale en période d'heure d'été

Exemple d'utilisation

Boîte de dialogue « Propriétés de Date/Heure » de Windows

Index

Aperçu

Clé 'Index' de la Time Zone de Paris

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Valeur notamment utilisée pour ordonner tous les fuseaux horaires de (GMT-12:00) à (GMT+12:00) en passant par le fuseau horaire (GMT).

Exemple d'utilisation

Boîte de dialogue « Propriétés de Date/Heure » de Windows

MapID

Aperçu

Clé 'MapID' de la Time Zone de Paris

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Valeur notamment utilisée pour afficher la carte correspondant au fuseau horaire.
Nous n'utiliserons pas cette clé dans nos sources Delphi.

Exemple d'utilisation

Boîte de dialogue « Propriétés de Date/Heure » de Windows

Std (« Standard »)

Aperçu

Clé 'Std' de la Time Zone de Paris

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Nom explicite de l'heure locale hors période d'heure d'été

Exemple d'utilisation

Boîte de dialogue « Propriétés de Date/Heure » de Windows

TZI (« Time Zone Information » - Informations de fuseau horaire)

Aperçu

Clé 'TZI' de la Time Zone de Paris

Type de donnée

REG_BINARY (Enregistrement binaire).
Valeur codée sur 44 octets.

Contenu

Valeur contenant toutes les informations propres à un fuseau horaire :

  • décalage horaire par rapport à l'heure GMT ;
  • décalage horaire heure d'été / heure d'hiver ;
  • paramètres du début de la période de l'heure d'été :

    • mois de l'année,
    • jour de la semaine,
    • ordre du jour dans le mois,
    • heures,
    • minutes,
    • secondes ;
  • paramètres de fin de la période de l'heure d'été :

    • mois de l'année,
    • jour de la semaine,
    • ordre du jour dans le mois,
    • heures,
    • minutes,
    • secondes ;
  • bascule automatique heure d'été / l'heure d'hiver.

Nous verrons le contenu précis de cette valeur quand nous utiliserons Delphi, dans la suite de ce tutoriel.

Vous savez désormais où sont stockés les fuseaux horaires dans le registre de Windows et quelles sont les informations disponibles.
Cependant, pour que l'heure locale soit juste, il faut que Windows stocke les paramètres propres à votre situation géographique, c'est l'objet de la prochaine rubrique.

III-B-2. Les informations propres au fuseau horaire local

Où sont stockées les données propres au système ?
Ces données font partie des « Paramètres régionaux » (Win 9x) ou « Options régionales » (Win 2000) et sont stockées dans la clé de registre suivante :

OS

Clé de registre

Win 9x / NT / 2000

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\

Dans cette clé de registre, vous trouverez huit sous-clés de registre :

Clé de registre concernant les informations locales

Voici le descriptif de chacune des sous-clés disponibles :

ActiveTimeBias (Décalage horaire actif)

Aperçu

Clé 'ActiveTimeBias'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Décalage horaire actif

Bias (Décalage horaire)

Aperçu

Clé 'Bias'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Décalage horaire normal

DaylightBias (Décalage horaire d'été)

Aperçu

Clé 'DaylightBias'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Décalage horaire à appliquer en période d'heure d'été

DaylightName (Nom du décalage horaire d'été)

Aperçu

Clé 'DaylightName'

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Nom du décalage horaire à appliquer en période d'heure d'été

DaylightStart (Démarrage de l'horaire d'été)

Aperçu

Clé 'DaylightStart'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Date et heure auxquelles démarre la période d'heure d'été

StandardBias (Décalage horaire standard)

Aperçu

Clé 'StandardBias'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Décalage horaire normal

StandardName (Nom du décalage horaire standard)

Aperçu

Clé 'StandardName'

Type de donnée

REG_SZ (Chaîne de caractères)

Contenu

Nom du décalage horaire à appliquer hors période d'heure d'été

StandardStart (Démarrage de l'horaire standard)

Aperçu

Clé 'StandardStart'

Type de donnée

REG_DWORD (Valeur entière à représentation décimale ou hexadécimale)

Contenu

Date et heure auxquelles démarre la période d'horaire normal (Heure d'hiver)


précédentsommairesuivant

Copyright © 2003 Stéphane Vaillant. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.