2015-05-06 47 views
1

我正在解析包含格式为DD/MM/YYYY HH:MM:SS的字符串的文件。我想阅读它们并将它们转换成Unix的时间戳,使用下面的代码:C++ strptime给出错误的结果

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); 

这是当我运行该程序会发生什么:

24/01/2014 00:04:42 
4 6 31 4 1 8 

来自哪里的问题?我还指出,无论格式如何,它似乎都会提供相同的输出。

回答

1

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

因此,下面的代码应该使用:

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

谢谢...不知道我怎么会错过这个东西明显 – pie3636