0

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


}
4

1 回答 1

1

从手册页strptime

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

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

更新
这里的另一个问题是使用mktime. 从该功能的 OpenGroup 描述中,

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

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

于 2012-07-02T14:31:26.123 回答