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

Modules Perl Discussion :

DateTime calcul de durée ?


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut DateTime calcul de durée ?
    Bonjour,

    J'utilise le module DateTime et je souhaite calculer la durée entre deux dates,

    j'ai utilisé le même exemple que sur la FAQ du module mais je n'arrive pas a avoir la durée comme indiqué dans la FAQ.

    Voici mon code de test :

    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
     
    #!/bin/perl
     
    use DateTime;
     
    my $date1 = DateTime->new( year   => 2007,
                              month  => 11,
                              day    => 24,
                              hour   => 22,
                              minute => 01,
                              second => 48,
                            );             
     
     
    my $date2 = DateTime->new( year   => 2007,
                              month  => 11,
                              day    => 26,
                              hour   => 01,
                              minute => 53,
                              second => 26,
                            );             
     
     
    my $dur = $date2->subtract_datetime($date1);
     
    print $dur."\n\n";
    le resultat du print est :

    DateTime:: Duration=HASH(0x341d4c)
    j'ai fait une boucle pour avoir les clés du hash mais rien ...

    voici l'example de la FAQ

    my $dt1 = DateTime->new( year => 2003, month => 4, day => 5,
    hour => 1, minute => 58,
    time_zone => "America/Chicago",
    );
    # is DST

    my $dt2 = DateTime->new( year => 2003, month => 4, day => 7,
    hour => 2, minute => 1,
    time_zone => "America/Chicago",
    );
    # not DST

    my $dur = $dt2->subtract_datetime($dt1);
    # 2 days and 3 minutes
    Merci par avance
    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut
    Salut,

    Bon a force je suis allé voir directement dans le module DateTime.pm

    l'objet retourné est un objet DateTime:: Duration :

    return
    DateTime:uration->new
    ( months => $months,
    days => $days,
    minutes => $minutes,
    seconds => $seconds,
    nanoseconds => $nanoseconds,
    );
    donc pour faire simple voici le code complet :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #!/bin/perl
     
    use DateTime;
     
    my $date1 = DateTime->new( year   => 2006,
                              month  => 11,   
                              day    => 24,
                              hour   => 22,
                              minute => 01,
                              second => 48,
                            );             
     
     
    my $date2 = DateTime->new( year   => 2008,
                              month  => 01,   
                              day    => 26,
                              hour   => 01,
                              minute => 53,
                              second => 26,
                            );             
     
     
    my $dur = $date2->subtract_datetime($date1);
     
    my $duration="";
     
    if($dur->years != 0){
            $duration.=$dur->years." year(s) ";
    }
     
    if($dur->months != 0){
            $duration.=$dur->months." month(s) ";
    }
     
    if($dur->days != 0){
            $duration.=$dur->days." day(s) ";
    }
     
    if($dur->hours != 0){
            $duration.=$dur->hours." hour(s) ";
    }
     
    if($dur->minutes != 0){
            $duration.=$dur->minutes." minute(s) ";
    }
     
    if($dur->seconds != 0){
            $duration.=$dur->seconds." second(s) ";
    }
     
    print $duration."\n\n";
    il y'a encore des choses a faire (plus simplement) mais il marche.

    Cordialement,

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu utilises un module comme DateTime c'est pas pour t'ennuyer par la suite à faire du formatage à la main... Utilise plutôt DateTime::Format::Duration.

    --
    Jedaï

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 134
    Par défaut
    merci Jedai

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/12/2006, 17h43
  2. [MySQL] Aide pour calculer une durée
    Par Sandara dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/06/2006, 17h00
  3. Calculer la duree d'un MP3
    Par k-koo dans le forum C
    Réponses: 4
    Dernier message: 16/03/2006, 21h01
  4. [Date] Fonction de calcul de durée entre 2 dates
    Par jesus144 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/01/2006, 16h36
  5. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 22h39

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