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 :

Parsing de date


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Par défaut Parsing de date
    Bonjour,

    je cherche à convertir une date au format unix (ex: 1346551425.510) vers un format %Y%m%d %h:%m:%s en perl (ex: 2012-09-12 09:12:24).
    Un équivalent de date -d @$time +'%Y-%m-%d %T' en perl en fait.

    Je peux pour le moment convertir une date du format unix vers le format local (ex: Thu Sep 13 10:21:31 CEST 2012) en utilisant Time:arseDate et la methode scalar, exemple de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    use strict;
    use Time::ParseDate;
     
    my $time = 1346551425.510;
    my $human_date = scalar(localtime($time));
    Mais je n'arrive pas à obtenir le format %Y%m%d %h:%m:%s. Pouvez-vous me dire s'il est possible de la faire avec cette méthode (scalar)? ou peut-être connaissez-vous une autre méthode pour le faire?

    Merci d'avance pour toute aide.

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonjour,

    Avez-vous jeté un coup d’œil dans la FAQ ?

  3. #3
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Ceci est juste un exemple sans utiliser de module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $RefDateActuelle = date(); # On recupere la réference d'un hash
    my $time = 1346551425.510;
    my $RefAutreDate    = date($time); # On recupere la réference d'un hash
     
     
    print "Date actuelle : $RefDateActuelle->{date}\n"; 
    print "Date correspondant au time $time : $RefAutreDate->{date}\n"; 
     
    sub date {
      my $time = shift || time;    #$time par defaut vaut le time actuel
      my ( $seconde, $minute, $heure, $jour, $mois, $annee, $jour_semaine, $jour_annee, $heure_hiver_ou_ete )
        = localtime($time);
      $mois  += 1;
      $annee += 1900;
     
      # On rajoute 0 si le chiffre est compris entre 1 et 9
      foreach ( $seconde, $minute, $heure, $jour, $mois, $annee ) {
        s/^(\d)$/0$1/;
      }
     
      my %date = (
        "date"         => "$annee$mois$jour $heure:$minute:$seconde",
        "heure"        => "$heure:$minute:$seconde",
        "jour_semaine" => $jour_semaine,
        "jour_annee"   => $jour_annee,
        "hiverOuEte"   => $heure_hiver_ou_ete,
      );
      return \%date;
    }
    Date actuelle : 20120913 10:47:51
    Date correspondant au time 1346551425.51 : 20120902 04:03:45

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Ou en plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use POSIX qw(strftime);
    my $now_string = strftime "%Y%m%d %H:%M:%S", localtime(1346551425.510);
    print $now_string;

  5. #5
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Par défaut
    POSIX qw(strftime) fait exactement ce que je voulait, merci beaucoup!
    Je vais faire plus attention à la Faq la prochaine fois, j'étais passé à coté.

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

Discussions similaires

  1. Parsing de Date, expression régulière
    Par Lorenzaccio dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/09/2009, 19h05
  2. [Debutant][Flex 3] Parsing de date
    Par ZeKiD dans le forum Flex
    Réponses: 4
    Dernier message: 25/04/2008, 12h52
  3. Probleme de parsing de date
    Par ptitbob dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/11/2006, 18h23
  4. Problème avec SimpleDateFormat.parse(Date)
    Par nad dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 14h34
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 19h36

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