我正在尝试将日期字符串转换为time_t,但是mktime()返回的是看似随机的日期:

string datetime = "2014-12-10 10:30";
struct tm tmInfo;
strptime(datetime.c_str(), "%Y-%m-%d %H:%M", &tmInfo);
tmInfo.tm_isdst = 0;
time_t eventTime = mktime(&tmInfo);

eventTime的范围从1970年代到2030年代不等。 tmInfo结构保存正确的日期,因此错误必须在mktime()中发生。有什么问题的想法吗?

最佳答案

在调用struct tm之前,您需要正确初始化strptime()实例的所有其他字段,因为它不一定初始化每个字段。从 strptime() POSIX specification:



例如,这应满足:

struct tm tmInfo = {0};

10-07 20:14