[PERL] obtenir la date de la veille

Résolu
wafa_o Messages postés 112 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour

Je souhaite obtenir en perl la date de la veille.
Voilà mon script, je m'apercois aujourd'hui qu'il ne fonctionne plus. Pourquoi ? Eh bien nous somme le 01/05/2010, mon script me renvoie 05-00-110 alors que je voudrais 04-30-10 :S

Est ce que quelqu'un peut m'aider svp ??

#!/usr/bin/perl

my ($sec, $min, $heure, $jour, $mois,$annee, undef, undef, undef) = localtime(time);
$mois += 1 and $jour -=1 and $annee -= 100;
$jour = sprintf("%02d",$jour);
$mois = sprintf("%02d",$mois);
my $d0 = "$mois-$jour-$annee";
print $d0,"\n";

Merci d'avance

1 réponse

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    soustraire directement 24h de time
    $ cat p4
    #!/usr/bin/perl
    
    my ($sec, $min, $heure, $jour, $mois,$annee, undef, undef, undef) = localtime(time-3600*24);
    $mois += 1 and $annee -= 100;
    $jour = sprintf("%02d",$jour);
    $mois = sprintf("%02d",$mois);
    my $d0 = "$mois-$jour-$annee";
    print $d0,"\n";
    $ 
    $ ./p4
    04-30-10
    $ 
    
    2
    1. wafa_o Messages postés 112 Statut Membre 2
       
      Merci !
      Du coup ca prend en compte l'année aussi non ? Parce que si la date du jour est le 1er janvier 2011, je voudrais avoir le 31 décembre 2010
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      oui, le 1/1/2011 moins 24h c'est le 31/12/2010
      0
    3. wafa_o Messages postés 112 Statut Membre 2
       
      Merci dubcek.
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le test:
      $ perl -e '($s, $mm, $h, $j, $m, $a, undef, undef, undef) = localtime($ARGV[0]-24*3600);print $j,"-", $m+1,"-", $a-100,"\n";' $(date -d '1 jan 2011' +%s)
      31-12-10
      $ 
      0