C++ strptime 给出错误的结果
C++ strptime giving wrong results
我正在解析一个包含格式为 DD/MM/YYYY HH:MM:SS
的字符串的文件。我正在尝试读取它们并将它们转换为 Unix 时间戳,使用以下代码:
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
问题出在哪里?我还注意到,无论格式如何,它似乎都提供相同的输出。
根据 man page,转换说明符使用 %
字符,而不是您使用的 &
。
因此,应使用以下代码:
strptime(str.c_str(), "%d/%m/%Y %H:%M:%S", &tm);
我正在解析一个包含格式为 DD/MM/YYYY HH:MM:SS
的字符串的文件。我正在尝试读取它们并将它们转换为 Unix 时间戳,使用以下代码:
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
问题出在哪里?我还注意到,无论格式如何,它似乎都提供相同的输出。
根据 man page,转换说明符使用 %
字符,而不是您使用的 &
。
因此,应使用以下代码:
strptime(str.c_str(), "%d/%m/%Y %H:%M:%S", &tm);