IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Afficher l'heure locale avec strftime


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Par défaut Afficher l'heure locale avec strftime
    Bonjour à tous,

    J'essaye de faire afficher l'heure locale à l'aide de la fonction strftime mais sans succès : c'est toujours l'heure UTC qui est affiché... alors que j'utilise la fonction localtime pour remplir la structure de type tm.

    Si dessous un extrait de programme que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    time_t heure;
    struct tm * t;
    char date[64];
     
    time(&heure);
    t = locatime(&heure);
     
    printf("Printf : Heure %i", t->tm_hour);
     
    strftime(date, 64, "%H", t);
    printf("Strftime : Heure %s", date);
    A l'exécution j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Printf : Heure 14
    Strftime : Heure 12
    J'ai cherché un peu de partout mais je n'arrive pas à comprendre pourquoi l'heure affiché par strftime est l'heure UTC et non l'heure locale. Je me suis penché du coté des variables TZ et LC_TIME mais j'ai du mal à comprendre le rapport...

    Je suis preneur d'un petit coup de main ou d'une explication

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Salut,

    tu utilises quel compilo sur quelle plateforme ?

    Ton code me donne la même heure dans les deux cas
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Par défaut
    Salut,

    Je suis sous Redhat AS 3.0 et Compilo gcc 3.2.3 (il me semble, je confirme demain).

    Variable d'environnement positionné comme suit :
    LC_TIME=fr_FR
    TZ non positionné

  4. #4
    Membre très actif Avatar de clampin
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 96
    Par défaut
    Bizarre, chez moi le code sur mon Macos x 10.4.11, PPC donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Printf : Heure 22       Strftime : Heure 22

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Par défaut
    [Edit]Précision de l'erreur[/Edit]

    Bonjour,

    Tous d'abord, merci de m'avoir répondu

    Ce matin, j'ai réécrit les instructions dans un .c ne contenant que ça et là ça marche J'en conclue que ça ne vient pas de la machine mais du code contenant les instructions.

    J'utilise actuellement log4cxx 0.9.7 pour le logging de l'appli et également GSoap en version serveur Standalone. Dans les logs, toutes les dates de log sont à l'heure UTC... et lorsque je compile, j'ai le warning suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dans le fichier inclus à partir de ../log4cxx/include/log4cxx/config.h:7,
    ...
    ...
    ../log4cxx/include/log4cxx/config_auto.h:17:1: AVERTISSEMENT: " HAVE_FTIME " redéfini
    Dans le fichier inclus à partir de src/soapStub.h:11,
    ...
    ...
    ...
    ../gsoap-linux/stdsoap2.h:301:1: AVERTISSEMENT: ceci est la localisation d'une précédente définition
    Je me pose donc la question suivante : est-ce que l'utilisation des bibliothèques log4cxx et gsoap n'introduirait pas un dysfonctionnement dans le mécanisme de gestion de l'heure ?

    Je vais investiguer de mon coté, si vous avez des pistes, je suis preneur

    Merci d'avance

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Par défaut
    Grosse grosse connerie de ma part

    Dans mon code exact, les printf étaient remplacé par des appels à LOG4CXX que j'ai enlevé pour simplifier.

    On avait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    time_t heure;
    struct tm * t;
    char date[64];
     
    time(&heure);
    t = locatime(&heure);
     
    LOG4CXX_DEBUG(logger,"Printf : Heure " + t->tm_hour);
     
    strftime(date, 64, "%H", t);
    LOG4CXX_DEBUG(logger,"Strftime : Heure " + date);
    Sauf que la méthode DEBUG devait appeler à nouveau la fonction time, et log4cxx est connu pour son bug sur les heures qu'il passe automatiquement en UTC. Donc je me retrouvais à pointer vers une heure UTC et non plus une heure locale.

    Voilou, une bonne co**rie à laquelle j'aurais du penser avant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] Conversion heure UTC en heure locale avec horaires été hiver
    Par PapouDomi dans le forum Développement
    Réponses: 5
    Dernier message: 09/07/2015, 18h48
  2. Pbm pour afficher l'heure avec timer
    Par lostsoul dans le forum Général Java
    Réponses: 2
    Dernier message: 14/12/2009, 02h11
  3. Afficher un site local avec un domaine spécifique
    Par tbassetto dans le forum Apache
    Réponses: 1
    Dernier message: 05/12/2008, 22h03
  4. Réponses: 3
    Dernier message: 18/11/2006, 21h44
  5. Afficher des heures locales
    Par mrpowerboy dans le forum Applets
    Réponses: 3
    Dernier message: 27/09/2005, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo