comparaison heure

comparaison heure - Perl - Programmation

Marsh Posté le 07-07-2008 à 11:58:58    

Salut,
 
J'ai un fichier qui contient des données avec la date et l'heure dans ce format :
 
2008-07-07 07:48:16 xxxxxxxxxxxxx
2008-07-07 07:50:16 yyyyyyyyyyyyy
2008-07-07 08:48:16 zzzzzzzzzzzzzz
 
Je parse mon fichier et avec ceci strftime( '%Y-%m-%d', localtime ); j'arrive a recupéré les lignes pourlesquel la date est egal à la date du jour;
 
Mais le probleme est que si je lance mes traitements plusieurs fois dans la journée ,  
je ne souhaiterais recuperer que les lignes compris entre une certaine plage d'horaire.
Par exemple , toutes celles > 07:50:16.
Je ne vois pas comment comparé l'heure systeme (du jour) avec l'heure que j'aurai recuperer dans le fichier (l'heure du fichier est une chaine de caractere);
L'heure systeme je la recupere avec cela : strftime( '%H:%M:%S', localtime ).
 
Merci de votre aide

Reply

Marsh Posté le 07-07-2008 à 11:58:58   

Reply

Marsh Posté le 07-07-2008 à 12:20:07    

comprends pas trop le problème, t'as juste à faire un petit truc comme ça :

Code :
  1. my $today =  strftime( '%Y-%m-%d', localtime );
  2. my $minH  = $ARGV[0] || '0';
  3. my $maxH  = $ARGV[1] || '25';
  4. open(FH, 'a.txt') || die('no file');
  5. while(<FH> ){
  6.  /(.*?) (.*?) (.*?)/;
  7.  if ( $1 eq $today && $minH le $2 && $2 le $maxH){
  8.    print "OK : ",$_,"\n";
  9.  } else {
  10.    print "NOK: ",$_,"\n";
  11.  }
  12.  
  13. }
  14. close FH;


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 08-07-2008 à 14:32:45    

merci pour ton code,
j'ai quelque petite question, dans ceci :

Citation :

{  /(.*?) (.*?) (.*?)/;


La premiere parenthese correspond à $1 et la deuxieme correspond à $2 et la  
troisieme serait un $3 et correspondrait au reste de la ligne,
c'est bien cela ?
Si $2 correspond à l'heure, perl est capable de l'interpreter et de comparer ?
Il ne les traite pas comme des chaînes de caracteres ?
 
Merci

Reply

Marsh Posté le 08-07-2008 à 14:38:32    

donny3 a écrit :

j'ai quelque petite question, dans ceci :

Citation :

{  /(.*?) (.*?) (.*?)/;



ça c'est feignant attitude hein :o
Cette ligne ( et la ligne du dessus) en version code "clair" doit s'écrire:

Code :
  1. while ( $line = <FH> ){
  2.  my @data = ( $line =~ /(.*?) (.*?) (.*?)/ );
  3. }


où un truc dans le genre....

donny3 a écrit :

La premiere parenthese correspond à $1 et la deuxieme correspond à $2 et la
troisieme serait un $3 et correspondrait au reste de la ligne,
c'est bien cela ?


mouaip

donny3 a écrit :

Si $2 correspond à l'heure, perl est capable de l'interpreter et de comparer ?
Il ne les traite pas comme des chaînes de caracteres ?


Il la traite effectivement comme une chaine de caractère... Il s'avère juste que la comparaison sur les chaines de caractères ( remarque le le et non le < ) te retourne le bon résultat sans avoit besoin de "l'interpreter"

 


Message édité par anapajari le 08-07-2008 à 14:39:25

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 09-07-2008 à 10:38:24    

LOL
c'est pas feignant attitude, c'est juste pour infos parceque
mon heure je la recupere à l'aide d'un substr dans mon fichier.

Reply

Sujets relatifs:

Leave a Replay

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