首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于strptime()的问题

关于strptime()的问题
EN

Stack Overflow用户
提问于 2012-11-17 20:44:05
回答 1查看 1.5K关注 0票数 0

我使用函数strptime()从一个字符串转到一个struct tm。然而,当我检查字段时,有一些没有被填充。因此,我检查了手册页,但似乎我正在做正确的事情,所以现在我对出了什么问题感到不知所措。

示例输入字符串:

代码语言:javascript
复制
Wed, 19 Oct 2005 10:59:00 GMT

strptime函数:

代码语言:javascript
复制
if(strptime(date, "%a, %d %b %Y %T %Z", &time) != NULL)

据我理解,%a代表一周中的一天,%d代表月份的一天,%b代表月份,%Y代表年度,%T代表HH:MM:SS,%Z代表格林尼治时间。

tm struct输出

代码语言:javascript
复制
year: 32767; month: 866041216; day: 0;
hour: 3; minute: 0; second: 37941328

产生输出的代码:

代码语言:javascript
复制
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);

任何向正确方向的推进都会很有帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-11-17 22:27:44

必须在调用time之前初始化strptime,通常如下所示:

代码语言:javascript
复制
memset(&time, 0, sizeof(struct tm));

引用手册页

原则上,此函数不初始化tm,而是只存储指定的值。这意味着tm应该在调用之前初始化。在不同的UNIX系统之间,细节略有不同。glibc实现不涉及那些未显式指定的字段,但如果任何年份、月份或日元素发生更改,则重新计算tm_wday和tm_yday字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13434607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档