localtime et heure d'été ...
Bonjour à tous,
J'essaie désespérément de convertir un temps en seconde depuis Epoch en une structure tm grâce à la fonction localtime. En fait, cela fonctionne sauf que j'ai décalage (je pense à cause de l'heure d'été) ... J'ai utilisé dans la structure tm qui reçoit l'heure le champ tm_isdst mais ça ne change rien.
De plus, je souhaite que cette conversion soit valable toute l'année (en tenant compte automatiquement du changement d'heure).
Quelqu'un peut-il m'aider ???
Merci d'avance,
Marco85
Re: localtime et heure d'été ...
Citation:
Envoyé par Marco85
J'essaie désespérément de convertir un temps en seconde depuis Epoch en une structure tm grâce à la fonction localtime
Comment a été défini ce temps en secondes ? Si il est décalé, c'est normal que la conversion le soit aussi...
Donne un exemple de temps en secondes et de date attendue.
Re: localtime et heure d'été ...
Emmanuel Delahaye,
Citation:
Envoyé par Emmanuel Delahaye
Donne un exemple de temps en secondes et de date attendue.
Admettons que j'ai défini :
Code:
1 2 3
| time_t tmp_time_in_seconds;
tmp_time_in_seconds = 1;
struct tm* p_time_to_convert = gmtime (&tmp_time_in_seconds); |
Je m'attends à avoir p_time_to_convert->tm_hour égal à 0 puisqu'il s'agit de la date 1er Janvier 1970 00:00:01. Or je reçois p_time_to_convert->tm_hour égal à 1.
Voilà, alors je ne comprends pas bien pourquoi ...
Merci d'avance,
Marco85
Re: localtime et heure d'été ...
Citation:
Envoyé par Marco85
Code:
1 2 3
| time_t tmp_time_in_seconds;
tmp_time_in_seconds = 1;
struct tm* p_time_to_convert = gmtime (&tmp_time_in_seconds); |
Je m'attends à avoir p_time_to_convert->tm_hour égal à 0 puisqu'il s'agit de la date 1er Janvier 1970 00:00:01. Or je reçois p_time_to_convert->tm_hour égal à 1.
Je ne suis pas sûr que la valeur interne de la structure ait le sens que l'on croit...
Citation:
Voilà, alors je ne comprends pas bien pourquoi ...
L'important est que la date affichée soit correcte (asctime() ou strftime()):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include <stdio.h>
#include <time.h>
int main (void)
{
time_t tmp_time_in_seconds;
tmp_time_in_seconds = 1;
struct tm *p_time_to_convert = gmtime (&tmp_time_in_seconds);
puts (asctime (p_time_to_convert));
return 0;
} |
donne
Code:
Thu Jan 01 00:00:01 1970
Ce qui me parait correct.