Re: Problème de temps

Liste des GroupesRevenir à fcl c  
Sujet : Re: Problème de temps
De : JKB (at) *nospam* hilbert.invalid (JKB)
Groupes : fr.comp.lang.c
Date : 05. May 2026, 22:49:34
Autres entêtes
Organisation : NUO - News.Usenet.Ovh
Message-ID : <slrn10vkpfe.g7m.JKB@hilbert.systella.fr>
References : 1 2
User-Agent : slrn/1.0.3 (Linux)
Le 05-05-2026, tTh <tth@none.invalid> a écrit :
On 5/5/26 11:52, JKB wrote:
Bonjour à tous,
>
    Bonsoir à toi Joel. Comment va ton camion ?

Bonsoir Thierry.

Toujours chez ce fichu carrossier !

>
     gettimeofday(&horodatage, NULL);
 
     t = time(NULL);
     horodatage.tv_sec += (time_t) difftime(mktime(gmtime_r(&t, &tm1)),
             mktime(localtime_r(&t, &tm2)));
 
Sauf que ça ne fonctionne pas comme attendu.
>
    Alors, d'un lointain souvenir sur ce genre de truc, c'est
    peut-être un enchainement de macros (tu sais, ces #define
    fourbes et chafouins) qui font nawak. Peut-être décomposer
    ton operation en plusieurs étapes pourrait corriger ton
    problème. Just my milli€ :)

J'ai décomposé les opérations dans un fichier de test :

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

void
disp_tm(struct tm *tm)
{
    printf("%d %s\n", tm->tm_isdst, tm->tm_zone);
}

int
main()
{
        time_t  t;
        struct tm *tm;

        t = time(NULL);

        printf("time=%lld\n", t);

        printf("gmt=%lld\n", mktime(tm = gmtime(&t)));
        disp_tm(tm);
        printf("local=%lld\n", mktime(tm = localtime(&t)));
        disp_tm(tm);
        printf("diff=%lld\n",  mktime(localtime(&t)) - mktime(gmtime(&t)));

        exit(0);
}

Même résultat.

En revanche, je suis tombé sur quelqu'un qui disait qu'il fallait
traiter le cas de l'heure d'été à part. J'ai donc mis ceci dans mon
code :

    gettimeofday(&horodatage, NULL);

    t = time(NULL);
    horodatage.tv_sec += (time_t) difftime(mktime(gmtime_r(&t, &tm1)),
            mktime(localtime_r(&t, &tm2)));

    if (tm2.tm_isdst != 0)
    {
        horodatage.tv_sec -= 3600;
    }

Mais ça me semble scabreux. Pourquoi localtime_r renvoie-t-il CEST
en oubliant le CEST dans la conversion ?

JB

--
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
une réponse.

Date Sujet#  Auteur
5 May 26 * Problème de temps7JKB
5 May 26 +* Re: Problème de temps4Olivier Miakinen
5 May 26 i+- Re: Problème de temps1JKB
6 May 26 i`* Re: Problème de temps2Damien Wyart
6 May 26 i `- Re: Problème de temps1Damien Wyart
5 May 26 `* Re: Problème de temps2tTh
5 May 26  `- Re: Problème de temps1JKB

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal