C ++ strptime给出了错误的结果

时间:2015-05-06 02:29:58

标签: c++ time strptime

我正在解析包含格式为sudo update-alternatives --config java sudo update-alternatives --config javac sudo update-alternatives --config javaws 的字符串的文件。我正在尝试阅读它们并将它们转换为Unix时间戳,使用以下代码:

DD/MM/YYYY HH:MM:SS

这是我运行程序时会发生的事情:

tm tm;
cout << datestr << endl;
strptime(str.c_str(), "&d/&m/&Y %H:&M:&S", &tm);
cout << tm.tm_year << " " << tm.tm_mon << " " << tm.tm_mday << " " << tm.tm_hour << " " << tm.tm_min << " " << tm.tm_sec << " " << endl;
timestamp = mktime(&tm);

问题出在哪里?我还注意到,无论格式如何,它似乎都会提供相同的输出。

1 个答案:

答案 0 :(得分:1)

根据man page,转换说明符使用的是%字符,而不是您使用过的&字符。

因此,应使用以下代码:

strptime(str.c_str(), "%d/%m/%Y %H:%M:%S", &tm);