Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Expert Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 172
    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 172
    Points : 7 668
    Points
    7 668

    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 Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 172
    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 172
    Points : 7 668
    Points
    7 668

    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 à l'essai
    Inscrit en
    avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 47
    Points : 22
    Points
    22

    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 Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 172
    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 172
    Points : 7 668
    Points
    7 668

    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 :
    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 :
    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 à l'essai
    Inscrit en
    avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 47
    Points : 22
    Points
    22

    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
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 21
    Points : 10
    Points
    10

    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 Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 172
    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 172
    Points : 7 668
    Points
    7 668

    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
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 21
    Points : 10
    Points
    10

    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 Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 172
    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 172
    Points : 7 668
    Points
    7 668

    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
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 21
    Points : 10
    Points
    10

    Par défaut

    Bonjour

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

    A++
    Patrick

  11. #11
    Membre chevronné
    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 : 697
    Points
    697

    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
    16 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 622
    Points : 465 463
    Points
    465 463

    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

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •