[PERL] obtenir la date de la veille

Résolu
wafa_o Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 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

A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
wafa_o Messages postés 109 Date d'inscription   Statut Membre Dernière intervention  
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
oui, le 1/1/2011 moins 24h c'est le 31/12/2010
0
wafa_o Messages postés 109 Date d'inscription   Statut Membre Dernière intervention  
 
Merci dubcek.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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