阅读量:0
int year, month, day, hour, minute, second; sscanf(s, format, &year, &month, &day, &hour, &minute, &second); struct tm tm; tm.tm_year = year - 1900; tm.tm_mon = month - 1; tm.tm_mday = day; tm.tm_hour = hour; tm.tm_min = minute; tm.tm_sec = second; time_t timestamp = mktime(&tm);
使用自定义结构体时,timestamp 时而正常,时而返回-1,使用 fprintf(stderr, "Errno: %d, Error message: %s\n", errno, strerror(errno));
找到错误信息:“Value too large for defined data type”(数值超出定义的数据类型范围),表明在使用 mktime(&tm)
函数时,tm
结构体中的某些字段值超出了函数支持的范围,导致无法正确处理。
于是把结构体字段都打印出来都没有超过范围,最后添加 tm.tm_isdst = -1; 自动判断夏令时, 终于正常。