这是我写的一个简短的代码,用于打印时间作为字符串或字符输入到hh:mm:ss表单。 没有编译错误,但给出了垃圾值。它出什么问题了? 注意:我不想打印日/月/年的事情。
# include<iostream>
# include<ctime>
using namespace std;
int main(){
const char *time_details = "15:34:12";
struct tm tm;
strptime(time_details, "%H:%M:%S", &tm);
time_t t = mktime(&tm);
cout << t << endl;
}
答案 0 :(得分:1)
来自strptime
上的手册页:
如果格式字符串不包含足够的转换规范来完全指定生成的struct tm,则未指定的tm成员保持不变。
您需要设置其他成员,或仅使用您设置的成员。
<强>更新强>
这里的另一个问题是使用mktime
。从该函数的OpenGroup描述中,
如果无法表示自Epoch以来的时间,则函数应返回值(time_t)-1
如果您只是将结构tm
清零,那么您将创建一个无法用Unix时间格式表示的时间(自1970年1月1日00Z以来的秒数)。至少,您需要将月份和日期设置为非零值。