【发布时间】:2014-01-09 08:30:12
【问题描述】:
我有一个包含 HH:MM:SS(':' 是字符串的一部分。) 格式的时间值的字符串。我必须将时间转换为秒并将该值赋给一个整数变量。我我不知道有什么功能可以帮助我做到这一点。
【问题讨论】:
标签: c++
我有一个包含 HH:MM:SS(':' 是字符串的一部分。) 格式的时间值的字符串。我必须将时间转换为秒并将该值赋给一个整数变量。我我不知道有什么功能可以帮助我做到这一点。
【问题讨论】:
标签: c++
使用 sscanf_s。 例如:
void ScanTime(char* strTime)
{
int hours;
int minutes;
int seconds;
sscanf_s(strTime, "%d:%d:%d", &hours, &minutes, &seconds);
printf("hours: %d\nminutes:%d\nseconds:%d\n", hours, minutes, seconds);
}
int _tmain(int argc, _TCHAR* argv[])
{
ScanTime("13:57:44");
return 0;
}
【讨论】:
int totalSeconds = seconds + minutes*60 + hours*3600;
由于这不是标准的 C++ 函数,它很大程度上取决于您使用的框架或库。
这是在 Borland C++ Builder 中的完成方式:
String Time;
Time = "12:34:56";
TDateTime DT;
try{
DT = StrToTime(Time);
}catch(...){String M = "Error converting time string: "+Time; Application->MessageBox(M.c_str(),"ERROR",MB_OK );}
【讨论】:
使用strtol。 例如::
int a=(int)strtol(numeric_string.c_str(),(char **)NULL,10);
如果您的意图是简单地转换 HH:MM:SS,则需要编写一个函数 算法是这样的(假设 24Hr 格式):
split字符串使用“:”strtol 将每个部分转换为整数。last part+(60* middle part)+(60*60*firstpart) 会给你
实际价值【讨论】: