Comparer 2 dates

Fermé
deck10 - 10 oct. 2003 à 20:51
 c-man - 13 oct. 2003 à 14:01
bonjour,
voici mon probleme:
sous linux, je recupere les dates de modification de 2 fichiers.
Comment savoir qu'un fichier est plus recent qu'un autre? si on les compare en chaine de caractere, par ex aout et janvier, janvier>aout mais en vrai c'est l'inverse du point de vue du calendrier.
Merci de me repondre au plus vite.
A voir également:

3 réponses

je voudrai savoir quel est le format d'affichage d'une varaible de type time_t.
Car dans mon programme C, je fais time(variable) et je voudrai afficher le nombre de secondes.
Une autre question: time sert -il vraiment a me donner le nbr de secondes du fichier depuis sa creation?
Merci de me repondre rapidement.
1
time_t est un typedef, mais correspond en fait à un long.
Dans ton programme, si tu fais

long nbsec ;
nbsec = time( NULL ) ;
printf( "nbsec = %ld\n", nbsec ) ;

tu vas obtenir le nombre de secondes écoulées depuis le 1/1/70.

Pour répondre à ton autre question, time ne te donne pas le nb sec depuis la création du fichier, mais comme je l'ai dit plus haut, le nb sec depuis le 1/1/70. Par conséquent, pour ton fichier tu auras simplement la date de modification de ton fichier mais traduit en nb sec depuis le 1/1/70. Comprends-tu ?

Pour ton problème, je pense que tu as à faire un truc du genre :
stat( "de ton fichier", ...) ;
puis dans la structure stat, il y a un champ st_mtime qui correspond au temps associé à la dernière modification.
Donc, pour connaitre le plus récent de 2 fichiers, tu fais un stat sur chacun d'eux, puis tu compares tout simplement les deux st_mtime.
stat(fic1, struc1 ) ;
stat (fic2, struct2 ) ;
if( struct1.st_mtime > struct2.st_mtime )
{
fic1 est plus récent que fic2
}
else
{
fic2 est plus récent que fic1
}

Voilà.
A+
0
au fait, ceci se fait en langage c.
Merci
0
Salut,
Si tu travailles sous Linux, je suppose que tu récupères ta date dans un long C. Dans ce cas, il te suffit de comparer les 2 dates. Celle qui a la valeur la plus grande est forcément la plus récente étant donné que les dates sous ce format expriment le nombre de secondes écoulées depuis le 1er Janvier 1970.
Une autre possibilite est de mettre ta date sous forme de chaine au format AAAAMMJJHHMMSS (AAAA = année, MM = mois, le reste tu le devines....) via un bon petit printf (et avec time, localtime). Celle qui est la plus grande est donc la aussi la plus récente.
Je ne sais pas si cela répond à ton interrogation.
A+
0