std::get_time 不适用于 visual studio 2012 年的日期

std::get_time not working for date in visual studio 2012

我正在尝试使用 visual studio 2012 中的 std::get_time 来解析日期和时间字符串。时间字符串似乎可以正确解析,但日期字符串不能。我想最终将日期字符串转换为整数以进行比较。我知道我可以手动解析它,但我想知道我是否遗漏了一些关于 std::get_time 的使用。这是带有输出的示例代码。

struct std::tm time, date;
std::istringstream ss( "09/02/2017 23:19:12" );
std::string ss1, ss2;
ss >> ss1 >> ss2;
std::stringstream iss1( ss1 ), iss2( ss2 );
iss1 >> std::get_time( &date, "%m/%d/%Y" );
iss2 >> std::get_time( &time, "%H:%M:%S" );
std::cout << date.tm_mon << "/" << date.tm_mday << "/" << date.tm_year << ", " << time.tm_hour << ":" << time.tm_min << ":" << time.tm_sec << "\n";

我得到的输出是

8/2/117, 23:19:12

这就是它的工作方式!

struct tm 将月份存储为 0-11,将日期存储为 1-31。年份是自 1900 年以来的年数。

http://en.cppreference.com/w/c/chrono/tm