Mise à l'heure

Soyez le premier à donner votre avis sur cette source.

Vue 6 291 fois - Téléchargée 322 fois

Description

Voici un petit source en réponse à une question du forum. Cette fonction met à l'heure le PC à l'aide de l'API. Elle tient compte des décalage horaires et de l'heure d'été.

Source / Exemple :


// Fonction de mise à l'heure
Function MiseHeure(DateHeure:TDateTime):Boolean;
Var Infos  :TSystemTime;
    Zone   :TTimeZoneInformation;
    Retour :Integer;
Begin
  // La mise à l'heure de windows est toujours effectuée en heure absoluse.
  // Il faut donc lire le décalage horaire par rapport à Greenwich puis
  // tenir compte du déclalage du à l'heure d'été.

  // Recherche des information sur les décalages locaux
  Result:=False;
  Retour:=GetTimeZoneInformation(Zone);
  // DateHeure étant en heure locale => ajout des décalages pour obtenir l'heure absolue
  Case Retour Of
    TIME_ZONE_ID_UNKNOWN  : DateHeure:=DateHeure+( Zone.Bias                   /(24*60));
    TIME_ZONE_ID_STANDARD : DateHeure:=DateHeure+((Zone.Bias+Zone.StandardBias)/(24*60));
    TIME_ZONE_ID_DAYLIGHT : DateHeure:=DateHeure+((Zone.Bias+Zone.DaylightBias)/(24*60));
  Else
    Exit;
  End;
  // Ensuite, mise à l'heure du Pc
  // Attention sous windows NT/2000/XP l'utilisateur doit avoir les droits suffisant pour que ça fonctionne !
  Infos.wYear         :=YearOf        (DateHeure);
  Infos.wMonth        :=MonthOf       (DateHeure);
  Infos.wDayOfWeek    :=DayOfWeek     (DateHeure);
  Infos.wDay          :=DayOf         (DateHeure);
  Infos.wHour         :=HourOf        (DateHeure);
  Infos.wMinute       :=MinuteOf      (DateHeure);
  Infos.wSecond       :=SecondOf      (DateHeure);
  Infos.wMilliseconds :=MillisecondOf (DateHeure);
  Result:=SetSystemTime(Infos);
End;

Conclusion :


Cette source et quelques autres sur : http://nono40.developpez.com

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
8 avril 2009

je besoin reglage l'horloge mais ne utilise pas l'horloge du systeme comment fait ?
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Oui effectivement cette fonction ne compile pas avec Delphi 5. Je vais voir ça et je mettrais un source compatible pour les deux versions...

Nono.
Messages postés
23
Date d'inscription
mercredi 17 avril 2002
Statut
Membre
Dernière intervention
23 décembre 2003

J'utilise Delphi 5 Professionnel et il me marque:
[Erreur fatale] Unit1.pas(15): Fichier non trouvé : 'Variants.dcu'
[Erreur fatale] Unit1.pas(46): Fichier non trouvé : 'DateUtils.dcu'

Et oui, tout le monde n'a pas encore Delphi 6 :)
Cependant j'ai une librairie de fonctions de dates avec laquelle votre fonction MiseHeure fonctionne parfaitement.
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Pour DeeJay : DateUtils est livré avec Delphi, il n'est donc pas nécessaire de la mettre dans le zip. Quel version de Delphi utilises-tu ?

Nono
Messages postés
23
Date d'inscription
mercredi 17 avril 2002
Statut
Membre
Dernière intervention
23 décembre 2003

Il manque DateUtils.dcu dans le zip :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.