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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 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é
    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
    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 confirmé
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    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é
    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
    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 confirmé
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    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 averti
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    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++

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