используя strptime, преобразовывающий строку во время, но получающий мусор

У меня проблема с использованием функции 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"**

3

Решение

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

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]