begin process at 2010 02 10 05:10:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

convertir FILETIME en time_t


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

convertir FILETIME en time_t

lundi 13 août 2007 à 10:46:30 | convertir FILETIME en time_t

LaTatadu91

Salut,

Voila mon probleme je recupere la date de cration d'un fichier via FindFirstFile(dir,&IpFindFileData);
FILETIME tim = IpFindFileData.ftCreationTime;

et j'aimerais faire une comparaison avec le temps courant et si le fichier est plus vieux d'un mois je l'efface...
habituellement  j'utilise pour ce genre de chose la fonction difftime
mais elel prend un argument 2 time_t

alors voila je cherche a convertir le filetime en time_t afin de pouvoir faire la soustraction entre les deux temps ....

ps : je ne suis aps contre d'autres idées si il y en a ...
Merci


 

lundi 13 août 2007 à 11:41:59 | Re : convertir FILETIME en time_t

LaTatadu91


j'ai essayer ca mais

double dif=difftime(current_time,IpFindFileData.ftCreationTime.dwHighDateTime);

mais il me donne 37ans alors que mon fichier n'a que 3jours et 37ans ca correspond au 1er janvier 1970 (comme par hasard)

bref j'avance pas


 

lundi 13 août 2007 à 12:09:07 | Re : convertir FILETIME en time_t

juju12

Tu peux utiliser CompareFileTime() qui prend deux FILETIME en argument; pour le temps courant tu peux le récupérer en SYSTEMTIME avec GetSystemTime() puis le convertir en FILETIME avec SystemTimeToFileTime().
lundi 13 août 2007 à 13:14:33 | Re : convertir FILETIME en time_t

LaTatadu91

a  priori c'est bon ce que tu m'as dit mais ce n'est pas ce que j'attends car la fonction CompareFileTime() renvoit 1,0,-1
si c'est egal inf, ou sup mais on sait pas de combien supérieur...
moi dans mes conditions il faut que ca soit supérieur a l'equivalent d'un mois (en sec ou autre)

du coup la ma condition n'est plus respéctée....



 

lundi 13 août 2007 à 13:55:11 | Re : convertir FILETIME en time_t

LaTatadu91

Voici la petite bidouille que j'ai faite :

FILETIME tim = IpFindFileData.ftCreationTime;
    FileTimeToSystemTime(&tim,&SystemTime);
    time_t current_time;
    time(&current_time);
   
    struct tm t;
    localtime_s( &t, &current_time);
    //ajustement pour le mois de janvier
    if(t.tm_mon == 0)
        t.tm_mon = 12;
    //on rentre que pour le mois avant le mois courant
    if(SystemTime.wMonth == t.tm_mon )//attention t.tm_mon (0-->11) et SystemTime.wMonth(1-->12)
    {
        if(SystemTime.wDay > t.tm_mday)
        {
            char  dir_file[100] = "C:\\";
            strcat(dir_file,IpFindFileData.cFileName);
            if( DeleteFile( dir_file ) != 0 )
                erase =true;
        }
    }
    else if (SystemTime.wMonth <= t.tm_mon -1)//pour les jours non éffacés a cause des mois en 30j ou 28
    {
        char  dir_file[100] = "C:\\";
        strcat(dir_file,IpFindFileData.cFileName);
        if( DeleteFile( dir_file ) != 0 )
            erase =true;
    }

a priori mes fichiers seront bien éffacés pas toujours au bon moment(pour les fichiers datant du 31 par ex) mais c'est pas bien grave...

je vois pas trop comment faire sinon :-s


 

lundi 13 août 2007 à 14:12:26 | Re : convertir FILETIME en time_t

LaTatadu91

rectification :   if(SystemTime.wDay > t.tm_mday)

devient   if(SystemTime.wDay < t.tm_mday)

 

lundi 13 août 2007 à 15:06:14 | Re : convertir FILETIME en time_t

juju12

Réponse acceptée !
D'accord mais j'entendais comparer avec une date pré-calculée d'un mois avant:

FILETIME ftLimitTime;
GetSystemTimeAsFileTime(&ftLimitTime);
ftLimitTime.dwHighDateTime=ftLimitTime.dwHighDateTime-6018; // précis à une minute a peu près j'ai compté 30 jours/mois
if(CompareFileTime(&ftFromFile,&ftLimitTime)<0)
 {
...// détruit le fichier
}

lundi 13 août 2007 à 16:18:59 | Re : convertir FILETIME en time_t

magma

#include //---------------------------------------------------------- // Conversion d'une structure FILETIME en nombre de secondes //---------------------------------------------------------- __int64 Filetime2int64(FILETIME ft) { return (__int64) ((((__int64)ft.dwHighDateTime << 32) | ft.dwLowDateTime)) / 10000000LL; } //---------------------------------------------------------- int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d) { FILETIME ft; char buf[512]; __int64 t1, t2; GetSystemTimeAsFileTime(&ft); t1 = Filetime2int64(ft); Sleep(2000); // 2 secondes GetSystemTimeAsFileTime(&ft); t2 = Filetime2int64(ft); wsprintf(buf, "Avant Sleep() (t1) %I64d secondes\n" "Après Sleep() (t2) %I64d secondes\n" "Différence entre t1 et t2 = %I64d secondes", t1, t2, t2-t1); MessageBox(0, buf, "", 0); return 0; }
lundi 13 août 2007 à 16:41:03 | Re : convertir FILETIME en time_t

LaTatadu91

ca a l'air de amrcher mais n'yant pas de fichier ayant plus d'un mois il est difficile de faire un test concret .... a voir

merci bcp!

 

lundi 13 août 2007 à 16:45:58 | Re : convertir FILETIME en time_t

LaTatadu91

je reviens sur ce que je disais juju12: ca ne amrche pas j'ai récupérer un vieux fichier txt que j'ai mis dans mon repertoire
et il ne passe aps dans la condition du comparefiletime.....



 


1 2 3 4

Cette discussion est classée dans : fichier, convertir, time, filetime, ipfindfiledata


Répondre à ce message

Sujets en rapport avec ce message

Convertir un fichier de C en Pascal [ par Frank ] Quelqu'un sait ou je pourrais trouver un bon petit programme pour convertir un fichier de C en Pascal !?!Merci D'avance !Frank listage de fichiers et dossiers ! [ par dletozeun ] Bonjour,je cherche a lister des dossiers et des fichiers d'un dossier en c++.je m'aide d'une source (Je ne sais plus de qui elle est!) je vois que cet convertir un CString en *Wchar [ par sixpack13 ] Bonjour,Pour un projet MFC en SDI nous utilisons le GDI+ et nous avons besoin de convertir un CString (nom du fichier) en *Wchar.voici le code de la f convertir un fichier .wav en fichier .mp3 [ par hacker_mt ] bonjour je souhaiterais savoir comment faire pour convertir un fichier .wav en fichier .mp3 merci d'avance (MFC) Convertir un CString en char[ ]/char * [ par swinteur ] Bonjour tout le monde Bon voilà, je débute en C++ et encore plus avec les MFC et je galère un peu..   alors apr problem avec DWORD et FILETIME [ par deck_bsd ] Bonjour, Voila j'ai un problème, je voudrai bien sauvegarder dans un fichier la date d'acces d'un fichier récupéré dans une variable de type WIN32_FI Convertir un fichier XML en PDF [ par jediNoobiewan ] Bonjour à tous, Je souhaite convertir un XML en PDF, je sais qu'il faut un fichier DTD (j'utilise docbook), un fichier XSL et un utilitaire pour faire Convertir un fichier Binaire en Fichier Texte [ par brute ] bonjour a tous, J'ai un problème, j'aimerais convertir un fichier binaire en fichier texte ..... Quelqu'un sait comment faire ?? Please help me convertir csv en xls [ par inozuka ] salut, je suis debutant en programmation. je veux convertir un fichier xls en un fichier csv en utilisant le langage c . a plus. FileTime et SystemTime pour un fichier sans date [ par Tinio ] Bonjour,Voilà, c'est très rare mais certaines dates de fichiers sont vides(voir les dates de modifications des 2 premiers fichiers de l'archive suivan


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales