web-dev-qa-db-fra.com

Comment convertir une variable chaîne contenant time en type time_t en c ++?

J'ai une variable de chaîne contenant le temps en hh: mm: format ss . Comment le convertir en type time_t? par exemple: string time_details = "16:35:12"

Aussi, comment comparer deux variables contenant du temps afin de décider laquelle est la plus ancienne? par exemple: string curr_time = "18:35:21" string user_time = "22:45:31"

33
R11G

Vous pouvez utiliser strptime(3) pour analyser l'heure, puis mktime(3) pour la convertir en time_t:

const char *time_details = "16:35:12";
struct tm tm;
strptime(time_details, "%H:%M:%S", &tm);
time_t t = mktime(&tm);  // t is now your desired time_t
50
Adam Rosenfield

Avec C++ 11, vous pouvez maintenant faire

struct std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = mktime(&tm);

voir std :: get_time et strftime pour référence

48
v2blz

Cela devrait fonctionner:

int hh, mm, ss;
struct tm when = {0};

sscanf_s(date, "%d:%d:%d", &hh, &mm, &ss);


when.tm_hour = hh;
when.tm_min = mm;
when.tm_sec = ss;

time_t converted;
converted = mktime(&when);

Modifiez au besoin.

14
Mahmoud Al-Qudsi