У меня проблема с использованием функции strptime () в C ++.
Я нашел фрагмент кода в stackoverflow, как показано ниже, и я хочу сохранить информацию о времени строки в struct tm. Хотя я должен получить информацию о годе в моей переменной tm tm_year, я всегда получаю мусор. Есть ли кто-нибудь, кто может мне помочь? Заранее спасибо.
string s = dtime;
struct tm timeDate;
memset(&timeDate,0,sizeof(struct tm));
strptime(s.c_str(),"%Y-%m-%d %H:%M", &timeDate);
cout<<timeDate.tm_year<<endl; // in the example below it gives me 113
cout<<timeDate.tm_min<<endl; // it returns garbage
**string s will be like "2013-12-04 15:03"**
cout<<timeDate.tm_year<<endl; // in the example below it gives me 113
это должно дать вам значение уменьшилось на 1900
так что если это даст вам 113
это означает, что год 2013
, Месяц также будет уменьшен на 1
то есть если это даст вам 1
Это действительно февраль. Просто добавьте эти значения:
#include <iostream>
#include <sstream>
#include <ctime>
int main() {
struct tm tm;
std::string s("2013-12-04 15:03");
if (strptime(s.c_str(), "%Y-%m-%d %H:%M", &tm)) {
int d = tm.tm_mday,
m = tm.tm_mon + 1,
y = tm.tm_year + 1900;
std::cout << y << "-" << m << "-" << d << " "<< tm.tm_hour << ":" << tm.tm_min;
}
}
выходы 2013-12-4 15:3
Других решений пока нет …