我使用函数strptime()从一个字符串转到一个struct tm。然而,当我检查字段时,有一些没有被填充。因此,我检查了手册页,但似乎我正在做正确的事情,所以现在我对出了什么问题感到不知所措。
示例输入字符串:
Wed, 19 Oct 2005 10:59:00 GMTstrptime函数:
if(strptime(date, "%a, %d %b %Y %T %Z", &time) != NULL)据我理解,%a代表一周中的一天,%d代表月份的一天,%b代表月份,%Y代表年度,%T代表HH:MM:SS,%Z代表格林尼治时间。
tm struct输出
year: 32767; month: 866041216; day: 0;
hour: 3; minute: 0; second: 37941328产生输出的代码:
printf("year: %d; month: %d; day: %d;\n",
time.tm_year, time.tm_mon, time.tm_mday);
printf("hour: %d; minute: %d; second: %d\n",
time.tm_hour, time.tm_min, time.tm_sec);
printf("week day: %d; year day: %d\n", time.tm_wday, time.tm_yday);任何向正确方向的推进都会很有帮助。谢谢!
发布于 2012-11-17 22:27:44
必须在调用time之前初始化strptime,通常如下所示:
memset(&time, 0, sizeof(struct tm));引用手册页
原则上,此函数不初始化tm,而是只存储指定的值。这意味着tm应该在调用之前初始化。在不同的UNIX系统之间,细节略有不同。glibc实现不涉及那些未显式指定的字段,但如果任何年份、月份或日元素发生更改,则重新计算tm_wday和tm_yday字段。
https://stackoverflow.com/questions/13434607
复制相似问题