[PERL] obtenir la date de la veille

Résolu/Fermé
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 1 mai 2010 à 16:40
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 2 mai 2010 à 11:03
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
1 mai 2010 à 16:58
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 mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
Modifié par wafa_o le 1/05/2010 à 17:08
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
2 mai 2010 à 08:18
oui, le 1/1/2011 moins 24h c'est le 31/12/2010
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
2 mai 2010 à 10:09
Merci dubcek.
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
2 mai 2010 à 11:03
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