Vraag Hoe een tekenreeksvariabele met tijd tot tijd_t in c ++ te converteren?


Ik heb een stringvariabele met daarin tijd uu: mm: ss-indeling. Hoe het te converteren naar time_t type? bijv .: string time_details = "16:35:12"

Ook, hoe twee variabelen die tijd bevatten te vergelijken om te beslissen welke de vroegste is? bijv .: string curr_time = "18:35:21"      string user_time = "22:45:31"


24
2018-06-26 18:04


oorsprong


antwoorden:


Je kunt gebruiken strptime(3) om de tijd te ontleden, en dan mktime(3) om het te converteren naar een 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

39
2018-06-26 18:22



Met C ++ 11 kun je nu doen

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);

zien std :: get_time en strftime als referentie


39
2017-07-30 12:37



Dit zou moeten werken:

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);

Pas indien nodig aan.


11
2018-06-26 18:12