langage C, localtime, time.h
Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

langage C, localtime, time.h



Vue hybride

  1. #1
    invitee5fedd72

    langage C, localtime, time.h

    est ce que quelqu'un peut m'expliquer le role de le 3 eme et de la 4 eme ligne du code dans la
    Code:
    time_t timestamp;
    struct tm *t;
    	
    timestamp = time (NULL); 
    t = localtime(&timestamp);


    Vous pouvez trouver la fonction complète sur ce lien:

    http://membres.lycos.fr/dancel/c/c110_110.htm


    Merci

  2. #2
    zoup1

    Re : langage C, localtime, time.h

    Ben il me semble qu'il y a a peut prêt tout ce que tu veux dans le lien que tu donnes.
    Sans doute y a t il des choses que tu ne comprends pas dedans...
    Tu sais ce qu'est une structure ?
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  3. #3
    invitee5fedd72

    Re : langage C, localtime, time.h

    Si je savais pas qu'est ce qu'une structure, j'aurai pas la possibilité de réaliser un programme en C qui contient plus de 1000 lignes de code de qui fonctionnne bien(Réponse pour le message de zoup1).
    Dans celui ci, j'ai fait appele à la fonction localtime dont j'ai pas bien compris le fonctionnement surtout la ligne
    Code:
    timestamp = time (NULL);
    Dans le lien, on trouve juste une explication de role général la fonction localtime qui convertie le nombre de secondes ecoulés depuis 01/01/1970.

    Ce qui me pose un problème c'est la ligne ci dessus.

    Donc si tu peux m'apporter une explication elle sera la bienvenue.

    Merci d'avance!

  4. #4
    zoup1

    Re : langage C, localtime, time.h

    Citation Envoyé par lui Voir le message
    Si je savais pas qu'est ce qu'une structure, j'aurai pas la possibilité de réaliser un programme en C qui contient plus de 1000 lignes de code de qui fonctionnne bien(Réponse pour le message de zoup1).
    Hola, faut pas te sentir agressé, moi je dis cela pour t'aider...
    Sache au moins que les structures ne sont absolument pas indispensable à la réalisation de programme de plusieurs milliers de lignes qui fonctionnent très bien.

    Dans celui ci, j'ai fait appele à la fonction localtime dont j'ai pas bien compris le fonctionnement surtout la ligne
    Code:
    timestamp = time (NULL);
    Dans le lien, on trouve juste une explication de role général la fonction localtime qui convertie le nombre de secondes ecoulés depuis 01/01/1970.

    Ce qui me pose un problème c'est la ligne ci dessus.

    Donc si tu peux m'apporter une explication elle sera la bienvenue.

    Merci d'avance!
    En ce qui concerne ton problème, c'est visiblement la fonction time() qui te pose problème. Je te propose donc d'aller voir dans le même document (http://membres.lycos.fr/dancel/c/c110_110.htm) je ne sais pas bien ce qu'on pourrais en dire de plus.
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  5. A voir en vidéo sur Futura
  6. #5
    invitee5fedd72

    Re : langage C, localtime, time.h

    Je me sens pas agressé, juste pour et repondre à ta question.

    MAintenant j'ai bien compris, en fait mon problème se situe au niveau de la fonction time() (j'ai pas vu sa définition au debut de lien).

    Parcontre j'aurai une question sur un autre sujet:
    Est ce que y a une moyen de faire un interface graphique pour un programme ecrit en C en gardant le meme programme.


    Je te remercie beaucoup

  7. #6
    zoup1

    Re : langage C, localtime, time.h

    Je vais me dispenser de répondre en détail à cette question car elle est trop générale..
    La réponse est oui...
    Après pour la pratique il faut choisir un environnement pour faire ton interface graphique. Ce choix dépend des contraintes que tu veux mettre sur ton interface. Par exemple si tu veux que ton programme fonctionne uniqument sous Windows ou uniquement sous MacOS ou uniquement sur Linux ou encore sur tout cela... cela conduit à des choix différents...
    Pour ma part, j'ai abondonné l'utilisation d'interface graphique pour mes productions. J'utilise plutot des interfaces via le Web par exemple pour interagir avec mes oeuvres.
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  8. #7
    invitee5fedd72

    Re : langage C, localtime, time.h

    JE comprend pas qu'est ce que est l'interface via le web?

    En fait comme je travaille sous Linux, je pense que celui ci fonctionnera seulement sous Linux

  9. #8
    zoup1

    Re : langage C, localtime, time.h

    L'interface Web, ce sont des formulaire en html qui appelles des programmes...
    Généralement ces programmes sont des script PHP, qui ont éventuellement la possiblité d'appeller des programme en C.

    Si tu es sous Linux il y a des environnement de développement comme kde qui te proposes un environnement de travail qui te permet de créer "facilement" une interface graphique à travers l'environnement QT4 (je crois)

    En fait il existe plein de façon différentes de faire... Une bonne pratique est de séparer complètement la partie calcul de la partie interface. Le mieux pour cela est de faire une interface graphique dans le système qui te plait... ce la peut-être du QT du Tk, du Java ou je ne sais quoi encore....
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  10. #9
    invite7517f46f

    Re : langage C, localtime, time.h

    Bonjour,

    Le post est assez ancien, mais je suis tombé dessus lors d'une recherche sur localtime, et j’avoue que vos explications mon bien aidé.

    Je suis sur un petit serveur sous linux embarqué. J'ai réussi à implémenter le client NTP sur notre réseau local.
    Dans mon ampli j'ai réussi, avec votre aide, à récupérer l'heure et la date grâce à localtime. Mais je ne suis pas localisé, car j'ai un décalage d'une heure.

    Je n'est pas de fichier /etc/timezone. Il faut que j'en crée un mais je ne sais pas vraiment quoi lui mettre et éventuellement informer le système de l'utiliser, j’avoue que je ne suis pas vraiment à l'aise avec linux.
    Je continu à chercher mais si une âme charitable peut me filer un coup de main.

    A l'avenir ce paramètre doit pouvoir être paramétrable car nos systèmes s'exportent dans le monde entier.

    Merci de votre aide

  11. #10
    inviteb9f49292

    Re : langage C, localtime, time.h

    Plusieurs choses à clarifier:

    Je suis sur un petit serveur sous linux embarqué. J'ai réussi à implémenter le client NTP sur notre réseau local.
    Je ne comprends pas ce que tu veux dire par là, tu as configuré un serveur NTP sur votre réseau local est tu as réussi a installer un client NTP sur ton système embarqué qui utilise ton serveur local ? Ou bien tu as simplement installé un client NTP sur le système embarqué qui utilise un serveur NTP publique ?

    Dans mon ampli j'ai réussi, avec votre aide, à récupérer l'heure et la date grâce à localtime. Mais je ne suis pas localisé, car j'ai un décalage d'une heure.
    Je ne sais plus exactement comment ça marche et ça dépends de la distribution (il me semble que red-hat et debian ne font pas la même chose), attention également qu'en général LINUX attends une RTC en UTC, je pense que c'est au démarrage que la timezone est appliquée à l'heure UTC de la RTC (chercher "hwclock" dans les scripts d'initialisations, et son man).

    ATTENTION, ce type de fonction (localtime, gettimeofday etc...) NE DOIVENT PAS ETRE UTILISEES POUR CALCULER UNE DUREE! Elle ne doivent être utilisées uniquement pour de la datation, en effet entre deux appels de "gettimeofday", ton horloge a pu ralentir (voir repartir en arrière) à cause de NTP, il faut donc utiliser une horloge monotonique.

    Dernière remarque, si ton système doit être diffusé dans le monde entier, il faudrait que l'utilisateur puisse changer la "timezone" _ET_ le serveur NTP utilisé. Mais peut-être tu peux te simplifier la vie et n'utiliser que l'UTC.

    Attention également, suivant comment tu utilises les dates, il y a beaucoup de chausse-trappes autour des "leap-seconds" et autres années bissextiles.

  12. #11
    invite7517f46f

    Re : langage C, localtime, time.h

    Citation Envoyé par lou_ibmix_xi Voir le message
    Plusieurs choses à clarifier:


    Je ne comprends pas ce que tu veux dire par là, tu as configuré un serveur NTP sur votre réseau local est tu as réussi a installer un client NTP sur ton système embarqué qui utilise ton serveur local ? Ou bien tu as simplement installé un client NTP sur le système embarqué qui utilise un serveur NTP publique ?
    Bonjour, j'ai pas été très clair effectivement. J'ai un petit serveur DIGI 9210 dont l'OS est un linux embarqué que je créer a l'aide d’éclipse et une base fourni par DIGI.
    Code:
    Réponse à la commande uname -a
    (Linux cme9210js 2.6.35.14 #1 Fri Jun 6 14:56:09 CEST 2014 armv5tejl GNU/Linux)
    On a un réseau local qui a son propre serveur NTP. Depuis le Serveur 9210 j'arrive a joindre le NTP et le serveur se met donc a jour mais avec une heure de décalage.

    Citation Envoyé par lou_ibmix_xi Voir le message
    Je ne sais plus exactement comment ça marche et ça dépends de la distribution (il me semble que red-hat et debian ne font pas la même chose), attention également qu'en général LINUX attends une RTC en UTC, je pense que c'est au démarrage que la timezone est appliquée à l'heure UTC de la RTC (chercher "hwclock" dans les scripts d'initialisations, et son man).

    ATTENTION, ce type de fonction (localtime, gettimeofday etc...) NE DOIVENT PAS ETRE UTILISEES POUR CALCULER UNE DUREE! Elle ne doivent être utilisées uniquement pour de la datation, en effet entre deux appels de "gettimeofday", ton horloge a pu ralentir (voir repartir en arrière) à cause de NTP, il faut donc utiliser une horloge monotonique.
    J'avoue que je suis un peu perdu. Le but final est d'avoir l'heure local du système bien sûr(afin que les données recueillies soit chronologiquement nommée), mais aussi de préparer le terrain pour mettre en place plus de sécurité sur nos serveurs, SSL etc... (Si besoin)

    Citation Envoyé par lou_ibmix_xi Voir le message
    Dernière remarque, si ton système doit être diffusé dans le monde entier, il faudrait que l'utilisateur puisse changer la "timezone" _ET_ le serveur NTP utilisé. Mais peut-être tu peux te simplifier la vie et n'utiliser que l'UTC.

    Attention également, suivant comment tu utilises les dates, il y a beaucoup de chausse-trappes autour des "leap-seconds" et autres années bissextiles.
    C'est clair qu'il faut que cela puisse être paramétrable, en ce qui concerne l'adresse du serveur NTP c'est fait mais pas pour la correction selon la zone géographique.
    J'avais cru comprendre que la mécanique autour de localtime s'occupait des années bissextiles et heure d'été.
    Comment utiliser uniquement l'UTC et est-ce que cela ne gène pas pour l'utilisation du SSL (Si cela est utile bien sûr)? Je suppose que c'est utile au vue des nombreux messages d'erreur obtenu lors d'une navigation sur le net avec un PC aillant l'horloge déréglé.

    Merci

  13. #12
    invite7a8ce750

    Re : langage C, localtime, time.h

    Pour une fois que tu as fais l'effort de la balise CODE, je me ferais un plaisir de t'aider, même si comme le dit zoup1 tout est compris dans le lien que tu fournis.

    On commence par time_t qui est le type du temps (le deuxième t de time_t sous-entend type). C'est un entier en fait.
    La fonction time te permet de récupérer le temps sous la forme d'un entier. Donc timestamp contient l'heure mais sous la forme d'un entier indiquant le nombre de secondes écoulées depuis le 1er janvier 1970 à 0 heure GMT. Juste après la ligne 3, affiche le contenu de timestamp et tu verras que ce n'est pas très agréable à lire. De plus, ça veut dire que tu dois t'amuser à le convertir en hh:mm:ss à chaque fois que tu compte l'utiliser... pas pratique. C'est là qu'intervient localtime et ctime.
    Ne nous intéressons pas à ctime puisque ce n'est pas là l'objet de ta question.

    La fonction localtime permet de convertir l'entier sous la forme d'un enregistrement (ce qu'on appelle souvent structure). Cet enregistrement contient un champ pour les minutes, les secondes, les jours etc. Voici la déclaration du type tm (c'est-à-dire de l'enregistrement du temps).
    Code:
    struct tm {
      int tm_sec;   /* Secondes */
      int tm_min;   /* Minutes */
      int tm_hour;  /* Heures (0 - 23) */
      int tm_mday;  /* Quantième du mois (1 - 31) */
      int tm_mon;   /* Mois (0 - 11) */
      int tm_year;  /* An (année calendaire - 1900) */
      int tm_wday;  /* Jour de semaine (0 - 6  Dimanche = 0) */
      int tm_yday;  /* Jour dans l'année (0 - 365) */
      int tm_isdst; /* 1 si "daylight saving time" */
    };
    Donc dans ton exemple t.tm_yday te permet d'accéder au jour de l'année correspondant au temps que tu as récupéré à l'aide de time et qui autrement sera codé et illisible a priori.

    Est-ce clair ?

  14. #13
    invite6de5f0ac

    Re : langage C, localtime, time.h

    Bonjour,

    On peut aussi préciser que localtime() tient compte du fuseau horaire de la machine. Des fois ça peut créer des surprises...

    -- françois

Discussions similaires

  1. langage c, time.h
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 02/05/2007, 23h07
  2. Time Stretching !?
    Par invitede32eed7 dans le forum Physique
    Réponses: 3
    Dernier message: 05/09/2006, 21h21
  3. Time Travel
    Par invite74fde144 dans le forum Physique
    Réponses: 6
    Dernier message: 06/12/2005, 17h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...