OVH Cloud OVH Cloud

Les dates.... gros soucis

5 réponses
Avatar
Mark Koenig
Bonjour,

J'utilise VC en C et je dois faire une application avec des dates
manipulées, mais j'ai du mal, car les horaires sont sauvés avec des
décalages suivant si local, GMT, heure d'été etc etc...

Bref je suis totalement perdu, une date sauvée ne revient plus pareil si
on la manipule donc, s'il vous plait, connaissez-vous un moye, un tutorial
qui permette de mettre cela a plat et de garder des dates cohérentes d'une
fonction "time" a un autre ?

Je dois m'y prendre mal qq part, mais je ne sais plus...

Merci pour vos lumières,

Mark.

5 réponses

Avatar
Stephane Zuckerman
Bonjour,

On Mon, 18 Apr 2005, Mark Koenig wrote:

Bref je suis totalement perdu, une date sauvée ne revient plus pareil si
on la manipule donc, s'il vous plait, connaissez-vous un moye, un tutorial
qui permette de mettre cela a plat et de garder des dates cohérentes d'une
fonction "time" a un autre ?


Je ne comprends pas bien votre problème. à moins de me tromper lourdement,
time() renvoie l'heure epoch. Il faut "juste" utiliser des bibliothèques
externes (ou bien faire la vôtre) pour ensuite adapter la date à la
localité considérée. La "seule" chose à faire est donc d'avoir une
"autorité de temps" à qui se référer (oui, je pense à un serveur). Deux
clients qui ont des horloges réglées différemments ne seront jamais
d'accord sur les dates.

Maintenant, peut-être que j'ai mal compris la question...

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Avatar
AG
Il est important de bien savoir faire la différence entre pointeurs et
variables. Par exemple si vous déclarez t1 comme un time_t * au lieu
d'un time_t, vous aurez des problèmes (des dates qui changent sans qu'on
le leur demande), en plus des warnings à la compilation. Ceci dit, cela
reste aisé à minupler,
Par exemple :



#include <stdio.h>
#include <time.h>


int main(int argc, char * argv[])
{
time_t t1;
struct tm *t;
char affichage[50]={0};

/* regarde l'heure */
time(&t1);

/* converti en heure locale */
t = localtime(&t1);

/* formatte */
strftime(affichage,50,"%c",t);

/* affiche le temps */
printf("%sn",affichage);

/* effectue une manipulation (ajoute une heure) */
t->tm_hour++;

/* reformatte */
strftime(affichage,50,"%c",t);

/* re affiche */
printf(" Apres ajoute d'une heure : n%sn",affichage);

return 0;
}

AG, amusé.
Avatar
Emmanuel Delahaye
Mark Koenig wrote on 18/04/05 :
J'utilise VC en C et je dois faire une application avec des dates
manipulées, mais j'ai du mal, car les horaires sont sauvés avec des
décalages suivant si local, GMT, heure d'été etc etc...

Bref je suis totalement perdu, une date sauvée ne revient plus pareil si
on la manipule donc, s'il vous plait, connaissez-vous un moye, un tutorial
qui permette de mettre cela a plat et de garder des dates cohérentes d'une
fonction "time" a un autre ?


En quoi est-ce une question sur le langage C ? C'est un problème de
spécification et de conception, non ? Quel rapport avec un langage
d'implantation, quelqu'il soit ?

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"There are 10 types of people in the world today;
those that understand binary, and those that dont."

Avatar
Charlie Gordon
"Emmanuel Delahaye" wrote in message
news:
Mark Koenig wrote on 18/04/05 :
J'utilise VC en C et je dois faire une application avec des dates
manipulées, mais j'ai du mal, car les horaires sont sauvés avec des
décalages suivant si local, GMT, heure d'été etc etc...

Bref je suis totalement perdu, une date sauvée ne revient plus pareil si
on la manipule donc, s'il vous plait, connaissez-vous un moye, un tutorial
qui permette de mettre cela a plat et de garder des dates cohérentes d'une
fonction "time" a un autre ?


En quoi est-ce une question sur le langage C ? C'est un problème de
spécification et de conception, non ? Quel rapport avec un langage
d'implantation, quelqu'il soit ?


Mais si, c'est une question sur la librairie standard C : je traduis

"je ne comprends rien aux fonctions de manipulation des dates en C, en
particulier en ce qui concerne les fuseaux horaires et autres subtilités
saisonnières, pourriez vous me conseiller un tutorial sur ces questions ?"

Il faut bien reconnaitre que les fonctions de traitement des dates sont mal
foutues, incohérentes, voire carrément absconses.
De plus l'étendue supportée est insuffisante pour beaucoup d'applications
réelles : je suis par exemple né avant l'origine ;-)

Mark Koenig devrait préciser un peu le contexte et le type de traitement qu'il
fait pour qu'on le dirige sur la solution appropriée.

Chqrlie.


Avatar
Targeur fou
Mark Koenig wrote:
Bonjour,


Salut,

J'utilise VC en C et je dois faire une application avec des dates
manipulées, mais j'ai du mal, car les horaires sont sauvés avec des

décalages suivant si local, GMT, heure d'été etc etc...


Si tu utilises les fonctions C standard il ne devrait pas y a voir de
problème particulier. Tu as dans <time.h> le type arithmétique time_t
et le type structure tm. Entre les fonctions time(), mktime() et
gmtime() (ou localtime()) tu dois pouvoir t'en sortir si tu choisis une
convention, comme tout exprimer en temps UTC ou en temps local àartir
du momenet où tu as ta date sous forme de time_t. Il faudrait que tu
exprimes plus clairement et si possible avec du code ton pb.

Regis