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 : Un (bon) module de gestion de date


Sujet :

Modules Perl

  1. #1
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut DateTime : Un (bon) module de gestion de date
    DateTime a été fondé afin de rassembler l'ensemble des fonctionnalités en rapport avec le temps auparavant dispersées sur un grand nombre de module et d'offrir une interface simple et cohérente à ces fonctionnalités, le tout en gardant des bonnes performances et un poids très raisonnable. D'après tout ce que j'ai pu essayer avec, c'est un succès !

    Je recommande donc à tous ceux qui veulent manipuler de façon complexe des dates en Perl de se diriger vers cette distribution, ils sont garantis d'y trouver ce dont ils ont besoin, et de pouvoir travailler simplement et efficacement avec.


    Si une grande majorité de Perliste se met à utiliser DateTime, cela facilitera également les échanges de code entre utilisateurs du forum. Il est également possible que DateTime se retrouve intégré au CORE, ce qui faciliterait encore son utilisation et sa diffusion.

    Vous êtes bien sûr libre d'utiliser n'importe quel module de gestion de dates (après tout la philosophie de Perl c'est TIMTOWDI : There's more than one way to do it), je voulais simplement vous faire part du fait qu'il en existe un qui fait pratiquement tout ce que font les autres, et de façon très propre et accessible.

    --
    Jedaï

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Les commentaires sont les bienvenus : si vous pensez que DateTime a certains défaut que je n'ai pas vu (éventuellement amendables par votre serviteur), ou manque de certaines fonctionnalités (il manque un calendrier islamique semble-t-il, mais je ne connais pas du tout ce calendrier, si quelqu'un s'y connait mieux, j'accueillerais avec plaisir un lien en français ou en anglais m'en disant plus), ou si vous désirez défendre votre propre choix de module, postez ici !

    --
    Jedaï

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 54
    Points
    54
    Par défaut DateTime
    Bonjour Jedaï,

    Voici un lien ici en Français pour les curieux qui veulent jouer comme moi avec DateTime.

    Altecad

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par altecad
    J'ai fais des recherches sur DateTime mais je n'ai pas encore vu comme je pourrai indiquer la génération automatique de vraies dates dans un intervalle comme du 2007-04-01 à 2007-04-24

    j'ai vu des DateTime-Calendar-XX mais je ne sais pas si je ne m'engage dans le chemin le plus rapide.

    Altecad
    Tu as plusieurs solutions, la plus simple (recommandée) c'est de faire appel à DateTime::Event::Recurrence.
    Par exemple pour avoir l'ensemble des jours entre deux dates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use DateTime;
    use DateTime::Event::Recurrence;
     
    my $daily_set = DateTime::Event::Recurrence->daily;
    # obtient la liste des jours entre 2007-04-01 et 2007-04-24 :
    # (on peut également l'utiliser comme un itérateur dans une boucle
    # pour éviter d'avoir des listes trop grosses)
    my @days = $daily_set->as_list( 
      start => DateTime->new( year => 2007, month => 4, day => 1 ),
      end => DateTime->new( year => 2007, month => 4, day => 24 ),
    );
    Sinon, quand on a des besoins particuliers, on peut avoir besoin d'utiliser DateTime::Set :
    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
    #!/usr/bin/perl
    use strict; use warnings;
     
    use DateTime;
    use DateTime::Set;
     
    my $days = DateTime::Set->from_recurrence(
            after => DateTime->now(locale => 'fr', time_zone => 'Europe/Paris',)
                ->subtract( months => 1 ),
            before => DateTime->now(locale => 'fr', time_zone => 'Europe/Paris',),
            recurrence => sub {
                return $_[0]->truncate( to => 'day' )->add( days => 1 );
            },
        );
     
    my $first = $days->next();
    print "En premier nous serons le ", $first->strftime("%A %e %B %Y"),"\n";
    while( defined(my $day = $days->next()) ) {
        print "Puis le ", $day->strftime("%A %e %B %Y"),"\n";
    }
     
    __END__
    (Ce programme énonce les jours écoulés depuis un mois, on voit ici l'utilisation d'un set comme itérateur dans une boucle, mais on aurait aussi pu utiliser as_list())

    --
    Jedaï

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 54
    Points
    54
    Par défaut
    Pour le premier cas, le tableau @days nous renvoi bien ceci:

    2007-04-01T00:00:00 / 2007-04-02T00:00:00 / 2007-04-03T00:00:00
    ....
    2007-04-22T00:00:00 / 2007-04-23T00:00:00 / 2007-04-24T00:00:00

    J'ai aussi testé avec le mois de février et nous avons :

    2007-02-27T00:00:00 / 2007-02-28T00:00:00
    2007-03-01T00:00:00 / 2007-03-02T00:00:00

    donc ce module est une pure merveille Merci Jedaï pour les explications.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Module manquant
    Bonjour
    je recherche justement un moyen de gérer les dates donc je veux essayer DateTime, mais pour l'installer sur mon serveur j'ai ce message :

    Échec de l'installation du module : Le module Scalar::List::Utils ne figure pas dans la liste des modules du CPAN

    Savez vous ce que je dois faire...

    Merci
    A++

  7. #7
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Là tu m'étonnes, ton cpan doit être mal paramétré parce que Scalar-List-Utils (qui est une distribution rassemblant Scalar::Utils et List::Utils) est bien présent sur le CPAN, et ne nécessite que la version 5.004 de Perl (si tu as une plus vieille version, tu as d'autres problèmes que de rajouter un simple module).

    --
    Jedaï

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Merci pour la réponse, pour la version Perl :
    Perl version 5.6.0

    Sur un serveur dédié OVH, je fais la mise à jour des module perl par webmin...est ce que celà peut venir de celà...

    Le tout avec une redHat OVH....

  9. #9
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Le problème avec tous ces "spécial OVH" c'est que j'ai un peu peur que tu casses quelque chose en faisant ça, mais franchement une 5.6.0 ... Ca a 7 ans et ça gère l'Unicode pas génialement... Ils auraient au moins pu la mettre à jour en 5.6.2 . La dernière release stable est la 5.8.8, la 5.10 est pour dans très bientôt (cette année très probablement), sans parler de la 6 évidemment (mais là je ne hasarderais pas d'hypothèses).
    Bref, tu n'as pas d'accès ssh au serveur ? (C'est un serveur dédié après tout, ça serait bien le comble si tu n'en avais pas) Tu pourrais essayer d'utiliser cpan directement (c'est pas bien compliqué, je dirais même plus simple que webmin).

    --
    Jedaï

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Bonjour

    Ok je fais faire les modifs serveur et je vous tiens au courrant

    A++
    Patrick

  11. #11
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Il y a quelques mois, j'avais écrit un petit tutoriel sur Date::Manip, un autre module qui permet de manipuler des dates. Je vais essayer DateTime, mais au cas où ça intéresserait quelqu'un...

    http://gnuvince.net/~vince/datemanip.html

  12. #12
    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 : 499 184
    Points
    499 184
    Par défaut
    En ce qui me concerne, j'utilise Date:Calc qui me permet de faire ce dont j'ai besoin.
    Sinon je fais une section dans la faq pour la gestion des dates, j'attends donc vos exemples pour mettre plusieurs exemples dans le FAQ (avec le module DataTime ou autres.

    Merci

Discussions similaires

  1. Gestion des DATE/DATETIME?
    Par beh_dev dans le forum Approche théorique du décisionnel
    Réponses: 5
    Dernier message: 06/01/2014, 08h49
  2. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  3. [MCD] Gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 13
    Dernier message: 08/09/2003, 09h29
  4. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  5. [BEST_PRACTICE][Merise] MCD & gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 4
    Dernier message: 16/04/2003, 17h07

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