如何将包含时间的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);
根据需要修改。