Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[CODE:Eiffel] Convertion de date
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
laurent_fait_du_bateau
n00b
n00b


Joined: 18 May 2004
Posts: 38

PostPosted: Mon May 31, 2004 6:06 pm    Post subject: [CODE:Eiffel] Convertion de date Reply with quote

Bonjour,
J'ai un problème car je dois récupérer la date de création des fichiers qui
est inscrit en seconde sur le hardware et pouvoir la transformer en date concrète
sec min heure jour mois année
Si quelqu un peu m'aider, j'ai trouver l'opération inverse dans une librairie c :

static inline unsigned long
mktime (unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}

return (((
(unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}


Last edited by laurent_fait_du_bateau on Tue Jun 01, 2004 5:55 am; edited 1 time in total
Back to top
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Mon May 31, 2004 6:38 pm    Post subject: Reply with quote

Note: merci de modifier le titre de ce thread. Pas besoin de crier,
et essaye de t'adapter au format des titres préconisés (voir le premier sticky)

Code:
man localtime

(fonction POSIX standard)
Je pense que ca doit pouvoir te servir.
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Mon May 31, 2004 6:39 pm    Post subject: Reply with quote

va voir du côté de la structure stat (sys/stat.h)

et time.h

créer une strcture tm (déclarée dans time.h)

il y a trois identificateurs temps dans la structure stat
st_atime
st_mtime
st_ctime

amuses toi avec en prenant ta_struct_tm = localtime(un_de_ces_3_identificateurs)

et après prend l'info qui t'interesses dans la structure tm résultante

tm_sec
tm_min
tm_hour

ce que tu veux...

tu peus aussi utiliser directement asctime(ta_struct_tm)
qui te filera une belle chaîne de caractères avec tout dedans préformatée et tout

[EDIT] amha j'ai été trop long à répondre :)
Back to top
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Mon May 31, 2004 6:42 pm    Post subject: Reply with quote

kwenspc wrote:

[EDIT] amha j'ai été trop long à répondre :)

Mais t'es beaucoup plus précis! :o
Back to top
View user's profile Send private message
laurent_fait_du_bateau
n00b
n00b


Joined: 18 May 2004
Posts: 38

PostPosted: Mon May 31, 2004 6:42 pm    Post subject: Reply with quote

c'est pas ca le probleme, avoir une structure de date mais c'est de convertir les secondes en s m h j mois année
exemple :
je lit sur la disquette dans l'inode du fichier l'info
access time: 960408513 et moi j'aimerais obtenir 7 juin 2000 22h08 33 sec
Back to top
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Mon May 31, 2004 6:45 pm    Post subject: Reply with quote

Tu devrais relire le post de kwenspc avec un peu plus d'attention. C'est exactement ce qu'il te propose.
Back to top
View user's profile Send private message
laurent_fait_du_bateau
n00b
n00b


Joined: 18 May 2004
Posts: 38

PostPosted: Mon May 31, 2004 6:47 pm    Post subject: Reply with quote

Petit problème je ne travail pas avec du c mais en eiffel et je n'ai pas trops utiliser les
conversion de pointer de c a eiffel
Back to top
View user's profile Send private message
DuF
Advocate
Advocate


Joined: 09 Dec 2002
Posts: 2687
Location: Paris

PostPosted: Mon May 31, 2004 6:52 pm    Post subject: Reply with quote

Comme l'a dit mseigneurin pas besoin de crier et => https://forums.gentoo.org/viewtopic.php?t=69179
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Mon May 31, 2004 7:08 pm    Post subject: Reply with quote

rah tss l'autre eh c'est maintenant que tu nous dis que tu fais de l'effeil...

ben ecoute là je vois pas moi c'est C-pour-la-vie :lol:

nan serieux : il doit y avoir moyen, bon sinon regardes le fonctionnement de la fonction que tu as trouvé tu la vois faire une conversion dans l'autre sens...

et bien qu'a cela ne tienne : tu fais l'inverse.
(m'étonnerait que ça existe pas déjà m'enfin...)

le temps donné en seconde et celui écoulé depuis le 1er janvier 1970

c pas trop compliqué de faire l'inverse a priori...

tu fais 1 division sur une année de secondes, tu ne prends que ce qu'il y a à droite de la virgule que tu gardes.
tu remultiplie ce meme chiffre par une année en seconde et tu soustrait le résultat aux secondes de départ...
tu vois le cheminement?

bon ben tu continus ensuite pour savoir combien de mois sont passé sur le reste, ensuite combien de jours, combien d'heures et le reste c tes secondes

après pour avoir ça en calendrier hum essais de voir des algos sur des calendriers perpetuels...

mais je pense que tu devrais directement essayé de poser la question à des peronnes qui touche à effeil...parce qu'une fonction qui fait ça c'est certain qu'elle existe déjà.
(et pi ajoute un [OFF] à ton titre de thread parce que là on est pas très proche de gentoo en fait)
Back to top
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Mon May 31, 2004 7:15 pm    Post subject: Reply with quote

L'important, c'est de pas se louper sur les années bisextiles :wink:
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Mon May 31, 2004 7:17 pm    Post subject: Reply with quote

oui justement je me suis arreter dans mon raisonnement parce que j'avais la flemme de résoudre le pb :D
Back to top
View user's profile Send private message
TGL
Bodhisattva
Bodhisattva


Joined: 02 Jun 2002
Posts: 1978
Location: Rennes, France

PostPosted: Mon May 31, 2004 10:00 pm    Post subject: Reply with quote

Réécrire ça alors que ça a été fait mille fois me semble être une mauvaise idée (ne serait ce que pour le principe de flemme, qui doit être défendu à tout prix en toutes circonstances).

Faire un appel vers un bout de libc (cf. le time.h comme conseillé déjà) n'est pas si compliqué, enfin moi ça me semble être aussi une solution raisonnable.

Sinon, si tu utilises SmartEiffel, tu dois pouvoir t'en tirer très simplement avec la classe TIME :
http://smarteiffel.loria.fr/libraries/time.html
(par exemple : tu crées une instance sur le "1 janvier 1970 à 00h00", tu lui ajoutes ton paquet de secondes, et tu as ta date toute prête. Il y a aussi des classes filles pour la localisation de la date en français ou autre.)

Ou mieux encore, tu dois pouvoir récupérer la librairie du projet Gobo Eiffel, qui semble un peu plus complète et gère le temps Unix comme une grande :
http://www.gobosoft.com/eiffel/gobo/time/absolute.html

Et effectivement, une petite édition du titre s'impose. Je ne suis qu'à moitié pour une balise "[Off]", parceque la plupart des off sont encore plus off que ça. Pourquoi ne pas instaurer une balise "[Code]", et ses déclinaisons "[Code: langage]", pour les discussion de programmation ? Ça donnerait ici : «[Code: Eiffel] Conversion de dates», ou un truc du genre.
Back to top
View user's profile Send private message
laurent_fait_du_bateau
n00b
n00b


Joined: 18 May 2004
Posts: 38

PostPosted: Tue Jun 01, 2004 5:49 am    Post subject: [CODE:Eiffel] convertion de date Reply with quote

laurent_fait_du_bateau wrote:
Bonjour,
J'ai un problème car je dois récupérer la date de création des fichiers qui
est inscrit en seconde sur le hardware et pouvoir la transformer en date concrète
sec min heure jour mois année
Si quelqu un peu m'aider, j'ai trouver l'opération inverse dans une librairie c :

static inline unsigned long
mktime (unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon += 12; /* Puts Feb last since it has leap day */
year -= 1;
}

return (((
(unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
Back to top
View user's profile Send private message
laurent_fait_du_bateau
n00b
n00b


Joined: 18 May 2004
Posts: 38

PostPosted: Tue Jun 01, 2004 6:03 am    Post subject: excuse Reply with quote

voila j'ai corriger le titre selon vos conventions, je n'avais pas fait toute suite attention
au standart et je m'en excuse :cry:
Je vais essayer la proposition de partir depuis la date en eiffel de 1970 et d'ajouter les secondes ca me parait une bonne idée, sinon j'essayerais de faire appel à la méthode c, bon coté c je n'ai pas trouvé la méthode qui me convertit les secondes en date dans time.h
et faire l'inverse me semblait aussi facile, en faite j'ai réussi à remonter jusqu'au jour et après le calcul se complexifie. En plus il y a chose étonnante une erreur de 2 heures en convertissant 960408513 sec
moi j'obtient : 20h 8 min 33 sec
et il faudrait apparement d'après le fichier linux: 22h 8 min 33 sec
mais bon ceci n'est qu'un détail de plus.....
Back to top
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 910
Location: Singapour

PostPosted: Tue Jun 01, 2004 8:57 am    Post subject: Re: excuse Reply with quote

laurent_fait_du_bateau wrote:
moi j'obtient : 20h 8 min 33 sec
et il faudrait apparement d'après le fichier linux: 22h 8 min 33 sec


C'est peut-être un petit problème entre le temps universel et le temps local, en effet c'est l'été en France et on est en GMT+2, et peut-être que le système stocke les dates en GMT?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum