2015-05-06 56 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