(C++) Comment calculer le temps passé entre 2 dates

Résolu
Alex_Dev_0698 Messages postés 39 Statut Membre -  
Alex_Dev_0698 Messages postés 39 Statut Membre -
Bonjour, je suis en train de créer un jeu et je voudrais intégrer un système de récompense journalière. Pour ca je doit trouver le temps écoulé depuis la dernière connexion au jeu. J'ai réussis à créer un système de log où il est écrit la date et l'heure des dernières connexions, mais je ne sais pas comment trouver le temps écouler avec ca. Y a-t-il une fonction avec ctime ou un autre module qui pourrais faire cela?

2 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Un
    time_t
    ou un
    time_point
    ça permet de gérer un point précis dans le temps. Une date c'est la même chose en plus imprécis et dans une notation compréhensible par l'humain en séparant année/mois/jour.
    Tu parles de
    ctime()
    qui a dû te servir à convertir un
    time_t
    en une date sous forme de texte. Il te faut faire la conversion inverse pour retrouver le
    time_t
    . Le problème est de retrouver tes année/mois/... puis de les convertir en
    time_t
    .
        std::tm tm{0};  // initialisé à zéro
        tm.tm_year = annee-1900;
        tm.tm_mon = mois-1;
        tm.tm_mday = jour;
        tm.tm_hour = heure;
        tm.tm_min = minutes;
        tm.tm_sec = secondes;
        std::time_t   date_sous_forme_d_un_time_t = std::mktime( &tm ); 

    Puis
    std::difftime(,)
    te donnera le nombre de secondes écoulées entre tes 2 time_t, à toi de mettre ces secondes sous une forme compréhensible par exemple "heure:minutes:secondes".
    1
    1. Alex_Dev_0698 Messages postés 39 Statut Membre
       
      je viens de réussir, je ne savais pas qu'il était possible de convertir une variable tm en time_t. Merci beaucoup. Je ne pas encore dire que mon programme marche parfaitement mais il me donne au moins les secondes écoulées entre deux dates.
      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    En C++ ce qui permet de dater ce sont les
    std::chrono::time_point
    . Pour trouver le temps écoulé entre 2
    time_point
    , il suffit d'en faire la différence.

    Mais comme tu parles de
    ctime()
    qui est une fonction du C. Tu peux aussi utiliser la fonction
    difftime( time_t_de_fin, time_t_de_debut )
    qui te donnera directement le nombre de secondes écoulées entre 2
    std::time_t
    .
    0
    1. Alex_Dev_0698 Messages postés 39 Statut Membre
       
      Le problème avec
      std::time_t
      , c'est qu'il ne donne pas de date précise, et je ne peut pas récupérer une variable de ce type dans mon fichier log. Sinon pour
      std::chrono::time_point
      , il s'agirais juste de soustraire les deux dates?
      0