读书人

【转】c语言时间变换字符串转秒或时

发布时间: 2012-10-24 14:15:58 作者: rapoo

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

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#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;}

读书人网 >C语言

热点推荐