[PERL] date année ... encore ....grrr
Résolu
sbouli
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
sbouli Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
sbouli Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de découvrir un petit bug dans un de mes script perl (que j'avais fait il y a quelque mois avec l'aide de nombre d'entre vous),
Il ne récupère pas le bon numéro de mois ... 4 au lieu de 5 pour le mois de MAI (may pour les anglophone)
a l'éxecution ça donne :
Merci d'avance pour votre aide ...
Stéphane
Je viens de découvrir un petit bug dans un de mes script perl (que j'avais fait il y a quelque mois avec l'aide de nombre d'entre vous),
Il ne récupère pas le bon numéro de mois ... 4 au lieu de 5 pour le mois de MAI (may pour les anglophone)
# Constantes @monthNames = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); %monthNums = qw( Jan 1 Feb 2 Mar 3 Apr 4 May 5 Jun 6 Jul 7 Aug 8 Sep 9 Oct 10 Nov 11 Dec 12); ($thisMon, $thisYr) = (localtime(time()))[4,5]; $thisYr += 1900; print localtime(time())."\n"; print "thisMon : $thisMon\n"; print "thisYr : $thisYr\n\n";
a l'éxecution ça donne :
Tue May 19 15:14:35 2009 thisMon : 4 thisYr : 2009
Merci d'avance pour votre aide ...
Stéphane
A voir également:
- [PERL] date année ... encore ....grrr
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise ✓ - Forum Sony
- Chanteur blond annee 80 - Forum Musique / Radio / Clip
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. - Forum Samsung
- Whatsapp date incorrecte ✓ - Forum Mobile
- Airpods 3 date de sortie - Guide
6 réponses
Salut,
# Constantes @monthNames = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); %monthNums = qw( Jan 1 Feb 2 Mar 3 Apr 4 May 5 Jun 6 Jul 7 Aug 8 Sep 9 Oct 10 Nov 11 Dec 12); ($thisMon, $thisYr) = (localtime(time()))[4,5]; $thisYr += 1900; $thisMon +=1; print localtime(time())."\n"; print "thisMon : $thisMon\n"; print "thisYr : $thisYr\n\n";
Re,
ça ne me confirme pas que le code est foireux depuis le début et que ceci fonctionnera le mois prochain ...
Ben, il suffit de voir la fonction localtime de perl et tu comprendras que ça fonctionnera même l'année prochaine
Voici un extrait de la commande perldoc -f localtime
localtime EXPR
localtime
Converts a time as returned by the time function to a 9-element list with the time analyzed for the local time zone. Typically used as follows:
# 0 1 2 3 4 5 6 7 8
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
All list elements are numeric, and come straight out of the C `struct tm'. $sec, $min, and $hour are the seconds, minutes, and hours of the specified time.
$mday is the day of the month, and $mon is the month itself, in the range 0..11 with 0 indicating January and 11 indicating December. This makes it easy to get a month name from a list:
Donc tu vois bien que les mois sont numérotés de 0 à 11 ce qui veut dire que tu dois ajouter 1 pour avoir de 1 à 12.
ça ne me confirme pas que le code est foireux depuis le début et que ceci fonctionnera le mois prochain ...
Ben, il suffit de voir la fonction localtime de perl et tu comprendras que ça fonctionnera même l'année prochaine
Voici un extrait de la commande perldoc -f localtime
localtime EXPR
localtime
Converts a time as returned by the time function to a 9-element list with the time analyzed for the local time zone. Typically used as follows:
# 0 1 2 3 4 5 6 7 8
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
All list elements are numeric, and come straight out of the C `struct tm'. $sec, $min, and $hour are the seconds, minutes, and hours of the specified time.
$mday is the day of the month, and $mon is the month itself, in the range 0..11 with 0 indicating January and 11 indicating December. This makes it easy to get a month name from a list:
Donc tu vois bien que les mois sont numérotés de 0 à 11 ce qui veut dire que tu dois ajouter 1 pour avoir de 1 à 12.
euuu ...t'es sûr ?
parceque si le mois prochain ça passe à 7 au lieu de 6, je meurt ... il faut ajouter parceque ça démarre à 0 ? ce qui voudrait dire que mon super code de la mort il est foireux depuis des mois ??????
(inutile de taper sur une ambulance ...)
Stéphane
parceque si le mois prochain ça passe à 7 au lieu de 6, je meurt ... il faut ajouter parceque ça démarre à 0 ? ce qui voudrait dire que mon super code de la mort il est foireux depuis des mois ??????
(inutile de taper sur une ambulance ...)
Stéphane
Re,
Euuu ...t'es sûr ?
Au lieu de poser la question et au lieu de te répondre, il fallait (je l'ai fais ;-) faire un petit test ;-))
Euuu ...t'es sûr ?
Au lieu de poser la question et au lieu de te répondre, il fallait (je l'ai fais ;-) faire un petit test ;-))
lami20j@debian:~/trash$ cat mois.pl #!/usr/bin/perl use strict;use warnings; my ($thisMon, $thisYr) = (localtime(time()))[4,5]; $thisYr += 1900; $thisMon +=1; print localtime(time())."\n"; print "thisMon : $thisMon\n"; print "thisYr : $thisYr\n\n"; __END__ lami20j@debian:~/trash$ perl mois.pl Tue May 19 19:33:43 2009 thisMon : 5 thisYr : 2009
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
Sans vouloir te paraitre insistant, ceci ne confirme pas la solution ...
Je suis d'accord avec toi qu'incrémenter le compteur mois passe bien le mois à 5 pour may, cependant, ça ne me confirme pas que le code est foireux depuis le début et que ceci fonctionnera le mois prochain ... pour bien faire il faudrait que je change la date systeme du linux ... (impossible vu qu'il fait tourner du postfix en continue) ...
ou faire l'opération sur une fausse date et pas sur le localtime mais là on part sur un test biaisé ...(sans jeu de mot)
En tout cas, merci, je suis traumatisé d'avoir pu passer à côté de ce genre d'erreur pendant des mois ...
Stéphane
Sans vouloir te paraitre insistant, ceci ne confirme pas la solution ...
Je suis d'accord avec toi qu'incrémenter le compteur mois passe bien le mois à 5 pour may, cependant, ça ne me confirme pas que le code est foireux depuis le début et que ceci fonctionnera le mois prochain ... pour bien faire il faudrait que je change la date systeme du linux ... (impossible vu qu'il fait tourner du postfix en continue) ...
ou faire l'opération sur une fausse date et pas sur le localtime mais là on part sur un test biaisé ...(sans jeu de mot)
En tout cas, merci, je suis traumatisé d'avoir pu passer à côté de ce genre d'erreur pendant des mois ...
Stéphane