unix下如何用strptime()

liaogd 2002-02-01 01:45:08
string="20020102231340"
struct tm t;
可是strptime(string,"%Y%m%d%H%M%S",&t)==NULL???

为什么呢??请解决。
...全文
1617 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
abraxas 2002-02-02
  • 打赏
  • 举报
回复
恐怕strptime必须如此实现,你可以用一个字符串实现“20020102231340”到“2002 01 02 23 13 40”的转换,只需要略加修改就可以,用下面的代码:
sprintf(lstr1,"%-.4s %-.2s %-.2s %-.2s %-.2s %-.2s\n",lstr,lstr+4,lstr+6,lstr+8,lstr+10,lstr+12,lstr+14);
strptime(lstr,"%Y %m %d %H %M %S",&tm2);



liaogd 2002-02-01
  • 打赏
  • 举报
回复
to abraxas(想飞的鱼)
谢谢,不过其实我是想把“20020102231340”转化为时间。
你是把“2002 01 02 23 13 40”转化为时间的。
年月日时分秒之间没有空格的。
再帮我看看。
abraxas 2002-02-01
  • 打赏
  • 举报
回复
嗨,我试过了,可以的呀,开始tm类型我声明的指针,后来为了和你一致,特意改成了结构,没有问题,请看我的测试代码:
#include <time.h>
void wgetctime(char *);

/**获取当前时间(以年月日时分秒方式表示)**/
void wgetctime(timep)
char *timep;
{
int TIME_LEN=15;
time_t clock;
struct tm *tm1;

memset(timep, 0, TIME_LEN);
time(&clock);
tm1=localtime(&clock);

sprintf(timep,"%04d %02d %02d %02d %02d %02d",tm1->tm_year+1900,tm1->tm_
mon+1,tm1->tm_mday,tm1->tm_hour,tm1->tm_min,tm1->tm_sec);
}

void main(){
char lstr[25];
struct tm tm2;
struct tm *tm1;

/**
tm1=malloc(sizeof(struct tm));
**/

bzero(lstr,25);
wgetctime(lstr);
printf("%s\n",lstr);

/**
strptime(lstr,"%Y %m",tm1);
***/
strptime(lstr,"%Y %m %d %H %M %S",&tm2);
tm1=&tm2;
printf("%04d%02d%02d%02d%02d%02d",tm1->tm_year+1900,tm1->tm_mon+1,tm1->t
m_mday,tm1->tm_hour,tm1->tm_min,tm1->tm_sec);


}



15,445

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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