c语言日期时间转换字符串,【转】c语言时间变换,字符串转秒或时间结构体

【转】c语言时间转换,字符串转秒或时间结构体

#include

#include

#include

#include

#define IN

#define OUT

//比较周数,成功返回0-6的数,错误返回7

//p代表周数,取周数前3个字母,如Mon代表周1,以此类推

//改动周几不影响返回的时间值,可以通过改动日期的日数来达到修改时间

int weekcmp( IN char *p)

{

char week[8][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

int i;

for(i=0;i<7;i++)

if(strcmp(p,week[i])==0)

break;

if(i==7)

{

printf("fail to find week.\n");

return i;

}

return i;

}

//比较月份,成功返回0-11的数,错误返回12

//P 为月份的前三个字母,如Feb代表二月,以此类推

int monthcmp( IN char *p)

{

char month[13][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

int i;

for(i=0;i<12;i++)

if(strcmp(p,month[i])==0)

break;

if(i==12)

{

printf("fail to find month.\n");

return i;

}

return i;

}

//将字串格式的时间转换为结构体,返回距离1970年1月1日0:0:0的秒数,当字符串格式错误或超值时返回0

//BUF 为类似Tue May 15 14:46:02 2007格式的,p为时间结构体

time_t timeconvert(IN char *buf,OUT struct tm *p)

{

char cweek[4];

char cmonth[4];

time_t second;

sscanf(buf,"%s %s %d %d:%d:%d %d",cweek,cmonth,&(p->tm_mday),&(p->tm_hour),&(p->tm_min),&(p->tm_sec),&(p->tm_year));

p->tm_year-=1900;

printf("****%s,%s*****\n",cweek,cmonth);

p->tm_mon=monthcmp(cmonth);

//改动周几不影响返回的时间值,可以通过改动日期的日数来达到修改时间

p->tm_wday=weekcmp(cweek);

if(p->tm_mon==12&&p->tm_wday==7)

{

printf("monthcmp() or weekcmp() fail to use.\n");

return 0;

}

return second=mktime(p);

}

int main()

{

long second;

char buf[]="Fri Jan 16 15:46:02 2007";

struct tm time1;

second = timeconvert(buf,&time1);

printf("year:%d, month:%02d, day:%02d\n",time1.tm_year+1900,time1.tm_mon+1,time1.tm_mday);

printf("second=%d\n",second);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值