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 :

convertir une date en seconde


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut convertir une date en seconde
    Bonjour,

    J'attaque mon deuxième script en perl (avant, je ne faisais que du PHP !)

    Je cherche à convertir une date (ayant ce format 051104 6:30:12) en secondes ?? En fait, le nombre de secondes écoulées depuis le 01/01/1970 (référence unix) ?

    Existe-t-il un moyen rapide pour réaliser cette convertion ?

    C'est une date extraite d'un fichier de log.
    Debian sarge 3.1 - perl 5.8.4

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #@temps = ($sec,$min,$hour,$mday,$mon,$year);
    my @temps = ("12","30","6","04","11","2005");
    # 051104 6:30:12)
    print localtime(@temps);
    => 6011070400
    secondes depuis 01/01/1970
    A toi de voir si le resultat est correct

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut
    Merci mais visiblement, cela ne fonctionne pas. J'ai testé en ajoutant 2 secondes et cela donne le même résultat !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    my @temps = ("12","30","6","04","11","2005");
    # 051104 6:30:12)
    print localtime(@temps);
    print "\n";
     
    my @temps = ("14","30","6","04","11","2005");
    # 051104 6:30:14)  je rajoute 2 secondes
    print localtime(@temps);
    print "\n";
    Cela donne :
    6011070400
    6011070400

    Donc le même résultat !

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Cet usage de localtime n'est pas bon ... ça fait l'inverse de ce qui est souhaité

    Perso, j'utilise, entre autres, le module Time::Local ...

    Tu découpe la date de ton log pour récupérer les différentes variables de temps, puis tu appliques un truc comme ça :
    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
    #!/usr/bin/perl -w
     
    use strict;
    use warnings;
    use Time::Local;
     
    # Conversion de la date (6 param. j m a h mn s) en Timestamp (date UNIX depuis Epoch)
    sub getTS {
      (my $jour, my $mois, my $annee, my $heure, my $minute, my $seconde) = @_;
      $mois--;
     
      return (timelocal ($seconde, $minute, $heure, $jour, $mois, $annee));
    }
     
    print getTS (9, 12, 2004, 11, 8, 54)."\n";
    print getTS (9, 12, 2004, 11, 9, 54)."\n";
    print getTS (9, 12, 2004, 12, 8, 54)."\n";
     
    my $t=gmtime(1110717630);
    print $t."\n";

  5. #5
    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
    sorry, je me suis trompé, c'est en effet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!/usr/bin/perl -w
    use strict;
    use Carp;
    use Time::Local;
     
    my @temps = ("14","30","6","04","11","2005");
     
    print timelocal(@temps);
    Merci eurocent!

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut
    Super, ce code fonctionne. Merçi à tous.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 29/06/2005, 11h22
  2. Convertir une date lunaire
    Par djeckelle dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/12/2004, 15h06
  3. []Comment convertir une date GMT en date vb ?
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/08/2004, 17h01
  4. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 12h28
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 11h52

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