mktime哪里用不对了?

juzixiangchang 2010-09-28 09:05:15
char *tmp_char = "2010/9/28 01:02:03 10-10";

struct tm start;
time_t start_t;
sscanf(start_date.c_str(),"%d/%d/%d %d:%d:%d %d-%d",
&(start.tm_year),
&(start.tm_mon),
&(start.tm_mday),
&(start.tm_hour),
&(start.tm_sec),
&(start.tm_min),
&(start.tm_wday),
&(start.tm_yday));
start_t = mktime(&start);


结果把start_t打印出来总是-1

我感觉不到错误i
...全文
186 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greex 2010-09-28
  • 打赏
  • 举报
回复
这个变量定义后没有符值:
struct tm start;
*****************
//这里直接用了,自然取不到吧。
start_t = mktime(&start);
dingshaofengbinbin 2010-09-28
  • 打赏
  • 举报
回复
没错!!!!
bluejays 2010-09-28
  • 打赏
  • 举报
回复
还是有问题,刚查了手册,tm_year和tm_mon的用法不对
应该在mktime之前加上两行:
start.tm_year -= 1900;
start.tm_mon--;
昵称很不好取 2010-09-28
  • 打赏
  • 举报
回复
start.tm_year = start.tm_year - 1900;
bluejays 2010-09-28
  • 打赏
  • 举报
回复
没看到start_date的定义。
把start_date.c_str()换成tmp_char之后结果就差不多了,不过还有几个小问题:
tm_sec和tm_min的顺序好像反了
tm_wday和tm_yday对于mktime没用,直接设成0即可。字符串最后的10-10是什么意思?

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧