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

Смежные вопросы