试图将存储在char中的时间转换为普通形式。打印随机值。怎么了?

时间:2012-07-02 14:14:51

标签: c++ time

这是我写的一个简短的代码,用于打印时间作为字符串或字符输入到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;


}

1 个答案:

答案 0 :(得分:1)

来自strptime上的手册页:

  

如果格式字符串不包含足够的转换规范来完全指定生成的struct tm,则未指定的tm成员保持不变。

您需要设置其他成员,或仅使用您设置的成员。

<强>更新
这里的另一个问题是使用mktime。从该函数的OpenGroup描述中,

  

如果无法表示自Epoch以来的时间,则函数应返回值(time_t)-1

如果您只是将结构tm清零,那么您将创建一个无法用Unix时间格式表示的时间(自1970年1月1日00Z以来的秒数)。至少,您需要将月份和日期设置为非零值。