如何将包含时间的stringvariables转换为C ++中的time_ttypes?

我有一个stringvariables包含hh:mm:ss格式的时间 。 如何将其转换为time_ttypes? 例如:string time_details =“16:35:12”

另外,如何比较两个包含时间的variables来决定哪个是最早的? 例如:string curr_time =“18:35:21”string user_time =“22:45:31”

您可以使用strptime(3)来parsing时间,然后mktime(3)将其转换为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 

用C ++ 11,你现在可以做

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

请参阅std :: get_time和strftime以供参考

这应该工作:

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

根据需要修改。