Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1051 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  problème d'affichage du format de la date (AAAA-MM-JJ)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème d'affichage du format de la date (AAAA-MM-JJ)

n°1719119
warzoo
Posté le 17-04-2008 à 12:09:42  profilanswer
 

salut tout le monde et merci de vous attardez sur mon cas.
 
j'ai un petit soucis avec mon mini code.
Dans mon premier cas:
sub time2str ($) {
    my $time = shift;
    my @t = (localtime $time)[0..5];
    return sprintf '%d-%d-%d', $t[5]+1900, $t[4]+1,$t[3]-1;
}
 
$date = time2str( time );
$date =~ s/-(\d)-/-0$1-/;

 
la date s'affichera comme ceci lorsque les jours seront inférieurs à 10:
"2008-04-9"
 
Dans mon autre cas:
sub time2str ($) {
    my $time = shift;
    my @t = (localtime $time)[0..5];
    return sprintf '%d-%d-%d', $t[5]+1900, $t[4]+1,$t[3]-1;
}
 
$date = time2str( time );
$date =~ s/-(\d)-(\d)/-0$1-0$2/;

 
la date s'affichera comme ceci lorsque les jours seront isupérieurs à 10:
"2008-04-016"
 
ce que je cherche a obtenir est une date du type: 2008-04-06 et 2008-11-30
 
le problème est que je dois passer à coté d'un truc mais je ne vois pas quoi.
merci de m'aider à résoudre mon problème.


Message édité par warzoo le 17-04-2008 à 12:10:47
mood
Publicité
Posté le 17-04-2008 à 12:09:42  profilanswer
 

n°1719121
Elmoricq
Modérateur
Posté le 17-04-2008 à 12:11:50  profilanswer
 

Utilise la première solution, avec ce pattern de sprintf : '%04d-%02d-%02d'
 
Explication : %04d signifie : "entier de longueur fixe de 4 caractères, et un padding qui se fait avec des '0' pour compléter les vides".

n°1719200
warzoo
Posté le 17-04-2008 à 14:01:16  profilanswer
 

merci pour la réponse, encore une fois, j'ai eu le droit à une réponse express avec qui plus est la bonne réponse lol.
 
à la poche pleine

n°1719213
gilou
Modérateur
Modzilla
Posté le 17-04-2008 à 14:19:11  profilanswer
 

Bref, au final, un truc plus ou moins comme ceci

Code :
  1. sub time2str ($) {
  2.     my @pad = (1900, 1, -1);
  3.     return sprintf "%04d-%02d-%02d", map {$_ + shift @pad} (localtime $_[0])[5,4,3];
  4. }


 
Si quelqu'un a une methode pour additionner deux arrays d'entiers avec un ou plusieurs maps, je suis preneur, pour faire un one-liner ;)
En Perl 6, il y a le bon operateur: >>+<<  
return sprintf "%04d-%02d-%02d", (1900, 1, -1) >>+<< (localtime $_[0])[5,4,3];
 
A+,


Message édité par gilou le 18-04-2008 à 09:44:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1719217
warzoo
Posté le 17-04-2008 à 14:26:45  profilanswer
 

c'est bien un truc de perfectionniste lol
c'est cool, vous assurez.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  problème d'affichage du format de la date (AAAA-MM-JJ)

 

Sujets relatifs
problème avec javaMail[PHP/SQL]: Problème: Envoie de formulaire PHP vers Mysql
[PERL] probleme avec foreach et l'ascii 10envoi mail problème
problème assez pointu entre writeexcel et session_start()probleme ecoute radio
Probleme avec format Date 
Plus de sujets relatifs à : problème d'affichage du format de la date (AAAA-MM-JJ)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR