Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

l'épineux problème des dates

10 réponses
Avatar
Jean-Philippe Caruana
Bonjour,

j'ai toujours un peu peur quand il s'agit de manipuler des dates, et ce
quel que soit le language utilisé.

j'aimerais pouvoir trier des dates par ordre chronologique(!) croissant.
Ces dates sont au format (mm/jj/aa hh:mm:ss)
ex : 11/19/04 10:23:52

Comment faut-il procéder ?
Faut-il les convertir dans un format de date de Perl et que ce dernier
saurait trier avec un bête sort ?
Ou existe-t-il un meilleur moyen ?

ps : firewall de l'entreprise oblige, je n'ai pas accès aux
merveilleuses ressources internet... alors pas de STFW svp ! ;-)

--
jpc
http://www.enstimac.fr/~caruana/

10 réponses

Avatar
David LE BOURGEOIS
Bonjour,



Bonjour.

j'ai toujours un peu peur quand il s'agit de manipuler des dates, et ce
quel que soit le language utilisé.

j'aimerais pouvoir trier des dates par ordre chronologique(!) croissant.
Ces dates sont au format (mm/jj/aa hh:mm:ss)
ex : 11/19/04 10:23:52

Comment faut-il procéder ?
Faut-il les convertir dans un format de date de Perl et que ce dernier
saurait trier avec un bête sort ?
Ou existe-t-il un meilleur moyen ?


J'ai l'habitude de stocker les dates sous la forme 2004/12/21 17:30:00,
indépendamment de la langue utilisée. Ansi, un simple sort permet
d'obtenir un ordre chronologique.

Sinon, dans le format 21/12/2004 17:40:00, il suffit d'ajuster les
paramètres du tri :

sort { substr($a, 6, 4) cmp substr($b, 6, 4)
|| substr($a, 3, 2) cmp substr($b, 3, 2)
|| substr($a, 0, 2) cmp substr($b, 0, 2) }

Par contre, si le format de l'année est réduit à deux chiffres, il est
impossible de trier deux dates de siècle différent (1998 et 2001 par
exemple).

--
David LE BOURGEOIS

Avatar
Patrick Mevzek

j'aimerais pouvoir trier des dates par ordre chronologique(!) croissant.
Ces dates sont au format (mm/jj/aa hh:mm:ss) ex : 11/19/04 10:23:52

Comment faut-il procéder ?
Faut-il les convertir dans un format de date de Perl et que ce dernier
saurait trier avec un bête sort ?
Ou existe-t-il un meilleur moyen ?


Vous tenez compte du fuseau horaire ou non ?

Outre la comparaison par chaine de caractères (dangereuse dans certain
cas, mais possible cf post de David),
vous pouvez aussi avoir vos dates sous forme de timestamp et
comparer donc des entiers entre eux, ce qui va très vite.

Sinon, utiliser des modules spécifiques à la gestion des dates,comme
Date::Manip par exemple.
C'est lourd, mais a priori ca gère correctement tous les cas (dates dans
des formats différents, fuseau horaire, etc...)

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

Avatar
Jean-Philippe Caruana
ex : 11/19/04 10:23:52


J'ai l'habitude de stocker les dates sous la forme 2004/12/21 17:30:00,
indépendamment de la langue utilisée. Ansi, un simple sort permet
d'obtenir un ordre chronologique.


c'est vrai. merci

Sinon, dans le format 21/12/2004 17:40:00, il suffit d'ajuster les
paramètres du tri :

sort { substr($a, 6, 4) cmp substr($b, 6, 4)
|| substr($a, 3, 2) cmp substr($b, 3, 2)
|| substr($a, 0, 2) cmp substr($b, 0, 2) }


ok

merci pour ces réponses
je fais finalement un

use Date::Format;
my $chaine = strftime("%s", @date);

ca me fait des grands entiers à comparer.

avec le @date doit etre de la meme forme que ce que retourne
localtime(), ce qui me pousse à m'immonde :

my @date = split (/ |/|:/, $la_Date_au_Depart);
my @realdate = ($date[5],$date[4],$date[3],$date[1],$date[0],$date[2]);



--
jpc
http://www.enstimac.fr/~caruana/


Avatar
Paul Gaborit
À (at) Tue, 21 Dec 2004 17:45:17 +0100,
David LE BOURGEOIS écrivait (wrote):
J'ai l'habitude de stocker les dates sous la forme 2004/12/21 17:30:00,
indépendamment de la langue utilisée. Ansi, un simple sort permet d'obtenir
un ordre chronologique.


En précisant tout de même que le 1er février s'écrit 2004/02/01 et non
2004/2/1. ;-) Ce format se rapproche assez du format ISO.

On peut passer par le module Time::Local (et timelocal pour l'opération
inverse) et donc manipuler des secondes depuis l'origine des temps (l'epoch).

On peut aussi utiliser l'un des modules Perl de manipulation de dates :
Date::Manip, Date::Calc, Date::Format, Date::Parse, DateTime, etc.

Personnellement, après avoir utilisé toutes ces méthodes, je conseille
DateTime pour son interface bien pensée et sa modularité...

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Jean-Philippe Caruana
Date::Manip, Date::Calc, Date::Format, Date::Parse, DateTime, etc.

Personnellement, après avoir utilisé toutes ces méthodes, je conseille
DateTime pour son interface bien pensée et sa modularité...


merci pour ces infos
finalement, j'utilise Date::Format : c'est comme ca qu'on me l'a appris
(à l'emac, par emmanuel o. en particulier pour ce module utilisé à
tire-larigo dans sa formation SGBD). Je m'en sers pour convertir en
epoch et trier dessus (cf mon post plus haut)

je me pencherai sur DateTime plus tard, histoire devoir comment ca
fonctionne.

--
jpc
http://www.enstimac.fr/~caruana/

Avatar
Paul Gaborit
À (at) Wed, 22 Dec 2004 11:14:48 +0100,
Jean-Philippe Caruana écrivait (wrote):
finalement, j'utilise Date::Format : c'est comme ca qu'on me l'a appris (à
l'emac, par emmanuel o. en particulier pour ce module utilisé à tire-larigo
dans sa formation SGBD). Je m'en sers pour convertir en epoch et trier dessus
(cf mon post plus haut)


En sus de Date::Format, nous utilis(i)ons aussi Date::Calc et Date::Manip...

Mais le temps passe et les choses évoluent... ;-)

je me pencherai sur DateTime plus tard, histoire devoir comment ca
fonctionne.


Nous l'avons fait pour toi... Conclusion: DateTime, c'est mieux ;-)

En fait, DateTime est une réécriture propre de la foultitude de modules plus
anciens (incomplets, lourds, buggués, incohérents, etc.). Vu les bonnes fées
qui se sont penchées sur son berceau, DateTime ne peut être qu'un excellenet
produit.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Missions courtes
"Paul Gaborit" a écrit dans le message news:


Nous l'avons fait pour toi... Conclusion: DateTime, c'est mieux ;-)

En fait, DateTime est une réécriture propre de la foultitude de modules
plus

anciens (incomplets, lourds, buggués, incohérents, etc.). Vu les bonnes
fées

qui se sont penchées sur son berceau, DateTime ne peut être qu'un
excellenet

produit.


Bonjour,
Je viens *sans succès* de rechercher les spécifications de *DateTime* dans
:
http://www.perl-gratuit.com/traduction/docfr/perlfunc.html
Où puis-je trouver des spécifications de *DateTime* ainsi que des exemples
?

Merci.
Cordialement.
Michel
Site www.missions-courtes.com

Avatar
Jack
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Le 22/12/2004 16:01,&nbsp; :
<blockquote cite="mid41c98d20$0$23382$" type="cite">
<pre wrap="">"Paul Gaborit" <a class="moz-txt-link-rfc2396E" href="mailto:">&lt;&gt;</a> a &eacute;crit dans le message news:
<a class="moz-txt-link-abbreviated" href="mailto:"></a>...
</pre>
<blockquote type="cite">
<pre wrap="">Nous l'avons fait pour toi... Conclusion: DateTime, c'est mieux ;-)

En fait, DateTime est une r&eacute;&eacute;criture propre de la foultitude de modules
</pre>
</blockquote>
<pre wrap=""><!---->plus
</pre>
<blockquote type="cite">
<pre wrap="">anciens (incomplets, lourds, buggu&eacute;s, incoh&eacute;rents, etc.). Vu les bonnes
</pre>
</blockquote>
<pre wrap=""><!---->f&eacute;es
</pre>
<blockquote type="cite">
<pre wrap="">qui se sont pench&eacute;es sur son berceau, DateTime ne peut &ecirc;tre qu'un
</pre>
</blockquote>
<pre wrap=""><!---->excellenet
</pre>
<blockquote type="cite">
<pre wrap="">produit.
</pre>
</blockquote>
<pre wrap=""><!---->
Bonjour,
Je viens *sans succ&egrave;s* de rechercher les sp&eacute;cifications de *DateTime* dans
:
<a class="moz-txt-link-freetext" href="http://www.perl-gratuit.com/traduction/docfr/perlfunc.html">http://www.perl-gratuit.com/traduction/docfr/perlfunc.html</a>
O&ugrave; puis-je trouver des sp&eacute;cifications de *DateTime* ainsi que des exemples
?
</pre>
</blockquote>
Essaies une bonne adresse <span class="moz-smiley-s1"><span> :-) </span></span>:<br>
<a class="moz-txt-link-freetext" href="http://www.enstimac.fr/Perl/">http://www.enstimac.fr/Perl/</a><br>
<br>
</body>
</html>
Avatar
Scetbon Cyril
Missions courtes wrote:
"Paul Gaborit" a écrit dans le message news:


Nous l'avons fait pour toi... Conclusion: DateTime, c'est mieux ;-)

En fait, DateTime est une réécriture propre de la foultitude de modules


plus

anciens (incomplets, lourds, buggués, incohérents, etc.). Vu les bonnes


fées

qui se sont penchées sur son berceau, DateTime ne peut être qu'un


excellenet

produit.



Bonjour,
Je viens *sans succès* de rechercher les spécifications de *DateTime* dans
:
http://www.perl-gratuit.com/traduction/docfr/perlfunc.html
Où puis-je trouver des spécifications de *DateTime* ainsi que des exemples
?
http://search.cpan.org/~drolsky/DateTime-0.24/lib/DateTime.pm


Merci.
Cordialement.
Michel
Site www.missions-courtes.com







Avatar
Missions courtes
"Scetbon Cyril" a écrit dans le message news:
41c9df81$0$31572$

Missions courtes wrote:
Bonjour,
Je viens *sans succès* de rechercher les spécifications de *DateTime*
dans


:
http://www.perl-gratuit.com/traduction/docfr/perlfunc.html
Où puis-je trouver des spécifications de *DateTime* ainsi que des
exemples


?


http://search.cpan.org/~drolsky/DateTime-0.24/lib/DateTime.pm


C'est exactement ce que je recherchais (et en plus il y a des exemples).

Merci Cyril Scetbon.
Cordialement.
Michel
Site www.missions-courtes.com