IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

localtime pas si simple ...


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 35
    Points
    35
    Par défaut localtime pas si simple ...
    Hello,

    Bon, j'avais vu dans un des fils ici que l'on pouvait utiliser localtime pour récupérer la date courante. Je me dis cool, pour générer un nom de fichier c'est plustôt intéressant !!

    Mais la syntaxe est plutôt du genre pas super triviale, et d'ailleurs erronée dans le-dit fil, bref, il m'a fallu un moment pour maîtriser la bête !

    Donc je veux un nom de fichier du genre ANNEEMOISJOUR, j'y arrive ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tmpo= 1900+(localtime)[5];
    $tmpo= $tmpo.(localtime)[4]+1;
    $tmpo= $tmpo.(localtime)[3];
    Mais je ne trouve pas cela satisfaisant, est-il possible d'obtenir le même résultat en une seule ligne ??

    Usti

  2. #2
    tfe
    tfe est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Points : 95
    Points
    95
    Par défaut
    j ai rien trouve de vraiment genial, appart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     perl -e '$_ = localtime(); s/[a-zA-Z]+ ([\S]+) (\d+) [\d\:]+ (\d+)/$3$1$2/g;  print ; '

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    encore plus long, mais plus pratique, tu mets ton code dans un sous prog.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub date {
      my @tab_date =localtime(time);
      my $jour = $tab_date[3];
      my $mois = ($tab_date[4]+1);
      my $annee =  ($tab_date[5]+1900);
    return "$annee$mois$jour";
    }

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: localtime pas si simple ...
    Bonjour,

    Citation Envoyé par ustilago
    Donc je veux un nom de fichier du genre ANNEEMOISJOUR, j'y arrive ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tmpo= 1900+(localtime)[5];
    $tmpo= $tmpo.(localtime)[4]+1;
    $tmpo= $tmpo.(localtime)[3];
    Mais je ne trouve pas cela satisfaisant, est-il possible d'obtenir le même résultat en une seule ligne ??
    Tu as raison, ce n'est pas satisfaisant

    Au moins pour une raison simple : tu fais trois appels distincts à la fonction localtime pour récupérer trois informations. Le problème, c'est que le temps passe, pendant ce temps là ...

    Imagine le pire ... le script tourne le 31/12/2005, à 23h59:59.9999 ...

    Le premier localtime te donne 2005, pour l'année.
    Le temps passe (ton script peut même être bloqué le temps qu'une autre tâche du système passe) et le jour change ...
    Les deux derniers localtime te donnent alors 01/01.

    Super, nous sommes le 31/12/2005 ou le 01/01/2006 et le script nomme le fichier 20050101


    Le faire en une seule ligne, je ne suis pas sûr que ce soit l'idéal ...

    Mais le faire avec un seul appel à localtime et un traitement ensuite, c'est plus efficace.

    Traitement court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my (undef, undef, undef, $jour, $mois, $annee) = localtime(time);
    my $printdate = (1900 + $annee) . (1 + $mois) . $jour;
     
    print "$printdate\n";
    Traitement long (en utilisant des tranches de hachages pour donner une indexation façon "structures" au tableau de résultats avec deux lignes de "préparation/déclaration") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my @lt_fields = qw (sec min hour mday mon year wday yday isdst);
    my %ma_date;
     
    @ma_date{@lt_fields} = localtime(time);
    my $printdate = (1900 + $ma_date{year}) . (1 + $ma_date{mon}) . $ma_date{mday};
     
    print "$printdate\n";

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 35
    Points
    35
    Par défaut
    Merci pour vos réponses, je vais partir sur la première solution de 2Eurocents.

    Effectivement j'avais pas percuté qu'il pouvait se passer du temps entre les appels sur des lignes différentes, mais en fait le cas catastrophe ne pouvait pas se passer (enfin du moins dans mon script actuel) vu qu'en fait c'est pour expoloiter des fichiers de sortie d'un autre programme, donc je le lance manuellement, c'est juste pour pas que mes fichiers générés s'écrasent malencontreusement ... je sais pas si je suis clair .

    Usti

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comparer deux objets pas si simple ?
    Par StIcK dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 20h55
  2. [xsl:fo] Mettre en forme du Xml (pas si simple !)
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 02/03/2006, 13h02
  3. [W3C] Valide W3C? Pas si simple qu'il y parait...
    Par Zenol dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 17/12/2005, 13h37
  4. requete sur 2 table (pas si simple)
    Par Sebou San dans le forum Requêtes
    Réponses: 7
    Dernier message: 29/11/2005, 14h08
  5. Pipes => pas plus simple ?
    Par Jorus dans le forum MFC
    Réponses: 4
    Dernier message: 02/02/2005, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo