我正在尝试将日期字符串转换为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};