[Résolu] Manipulation de dates par FILETIME et SYSTEMTIME

Manipulation de dates par FILETIME et SYSTEMTIME [Résolu] - API Win32 - Programmation

Marsh Posté le 29-09-2008 à 20:31:19    

Salut,
 
Voila mon problème :
 
J'ai une valeur en heures qui correspond à un seuil d'ancienneté des fichiers. Cette valeur peut varier de 1 à 255 heures.
Je veux parcourir un dossier avec des fichiers à archiver sur FTP => si les fichiers sont âgés d'au moins "mon_nbre_dheures", ils seront transférés.
 
Comment manipuler les dates des fichiers et les comparer à la date courante en prenant en compte mon seuil de 48h ?
 
Je voulais passer par un SYSTEMTIME converti en FILETIME mais comment prendre en compte mes fameux 48h ? Car un FILETIME est composé de 2 DWORD Low et High.
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
 
Merci de votre aide :)


Message édité par Deton@tor le 29-09-2008 à 23:09:17

---------------
Mon matos | Mon Feedback
Reply

Marsh Posté le 29-09-2008 à 20:31:19   

Reply

Marsh Posté le 29-09-2008 à 23:07:29    

Bon après un peu de réflexion et d'essais, j'ai trouvé la solution et je m'auto-réponds :D
Ça peut aussi servir à d'autres...
 

Code :
  1. void __fastcall TForm1::CalculerDateValidite(TObject *Sender)
  2. {
  3.      const unsigned __int64 i100NanoEnSecondes = 10000000; // Base de temps des FILETIME 100ns.
  4.      const unsigned __int64 i100NanoEnMinutes  = i100NanoToSecondes * 60;
  5.      const unsigned __int64 i100NanoEnHeures   = i100NanoToMinutes * 60;
  6.      const unsigned __int64 i100NanoEnJours    = i100NanoToHeures * 24;
  7.      SYSTEMTIME StCurrentTime, StSeuil;
  8.      unsigned __int64 FtSeuil;
  9.      int Heures = 48;
  10.      GetLocalTime(&StCurrentTime); // On récupère la date et heure locale en SYSTEMFILE
  11.      SystemTimeToFileTime(&StCurrentTime, (FILETIME*)&FtSeuil); // On convertit en FILETIME
  12.      FtSeuil = FtSeuil - Heures * i100NanoToHeures; // On envèle les 48h à la date courante pour avoir la date seuil de validité
  13.      FileTimeToSystemTime((FILETIME*)&FtSeuil, &StSeuil); // On repasse en SYSTEMFILE pour afficher sur l'IHM
  14.      //=> Affichage dans des Labels de la Date courante et la date seuil
  15.      cJ->Caption=StCurrentTime.wDay;
  16.      cM->Caption=StCurrentTime.wMonth;
  17.      cA->Caption=StCurrentTime.wYear;
  18.      cH->Caption=StCurrentTime.wHour;
  19.      fJ->Caption=StSeuil.wDay;
  20.      fM->Caption=StSeuil.wMonth;
  21.      fA->Caption=StSeuil.wYear;
  22.      fH->Caption=StSeuil.wHour;
  23. }


---------------
Mon matos | Mon Feedback
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed