Value too large for defined data type

avatar
作者
筋斗云
阅读量: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; 自动判断夏令时, 终于正常。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!