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

Résolu/Fermé
Alex_Dev_0698 Messages postés 35 Date d'inscription dimanche 31 octobre 2021 Statut Membre Dernière intervention 2 décembre 2022 - 1 juil. 2022 à 19:18
Alex_Dev_0698 Messages postés 35 Date d'inscription dimanche 31 octobre 2021 Statut Membre Dernière intervention 2 décembre 2022 - 2 juil. 2022 à 12:46
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
2 juil. 2022 à 10:10
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
Alex_Dev_0698 Messages postés 35 Date d'inscription dimanche 31 octobre 2021 Statut Membre Dernière intervention 2 décembre 2022
2 juil. 2022 à 12:46
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
1 juil. 2022 à 20:40
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
Alex_Dev_0698 Messages postés 35 Date d'inscription dimanche 31 octobre 2021 Statut Membre Dernière intervention 2 décembre 2022
1 juil. 2022 à 23:53
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