Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Modules
Modules Toutes vos questions sur l'utilisation, l'installation, la création de modules Perl sous Windows/Linux/Unix/MacOS. Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/04/2007, 19h41   #1
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 19h46   #2
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 12h47   #3
altecad
Membre à l'essai
 
Inscription : 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
altecad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 15h39   #4
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h06   #5
altecad
Membre à l'essai
 
Inscription : avril 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 47
Points : 22
Points : 22
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.
altecad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 17h17   #6
Patrick-74
Candidat au titre de Membre du Club
 
Inscription : 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++
Patrick-74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 17h21   #7
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 17h27   #8
Patrick-74
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 21
Points : 10
Points : 10
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....
Patrick-74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 17h58   #9
Jedai
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 8 209
Points : 8 209
Envoyer un message via Yahoo à Jedai
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ï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 16h46   #10
Patrick-74
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 21
Points : 10
Points : 10
Bonjour

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

A++
Patrick
Patrick-74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2007, 18h10   #11
GnuVince
Membre chevronné
 
Avatar de GnuVince
 
Développeur informatique
Inscription : 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 : 765
Points : 765
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
GnuVince est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 12h30   #12
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 478
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 478
Points : 31 588
Points : 31 588
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 !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h57.


 
 
 
 
Partenaires

Hébergement Web