Linux C将文本时间转换成系统格式

假设字符串日期的格式是YY-MM-DD HH:MI:SS

 

示例如下:

#include        <stdio.h>

#include        <sys/time.h>

 

 typedef char    DATEVAL[256];

 

/*

利用系统自带的时间转换函数mktime来检验获取到的时间是否有效

返回 -1 表示失败

*/

static        time_t

make_date( struct tm *Time )

{

         time_t      t;

 

         if( ( t = mktime( Time ) ) == -1 )

                   fprintf(stderr, “无效的时间值\n” );

         returnt;

}

 

/*

一个静态的返回值是time_t类型的方法

返回 -1 表示失败

*/

static time_t

cnv_date(const DATEVAL Date)

{

       int     y, m, d, h, mi, ss;

       struct  tm      v;

       time_t  t;

 

       if ( sscanf( Time, "%d-%d-%d %d:%d:%d", &y, &m,&d, &h, &mi, &ss ) != 6 ){

                fprintf( stderr, "无效的时间格式\n");

                return -1;

       }

       v.tm_year = y - 1900;

       v.tm_mon = m - 1;

       v.tm_mday = d;

                   v.tm_hour= h;

                   v.tm_min= mi;

                   v.tm_sec= ss;

       return make_date( &v );

}

 

int    main()

{

         time_t         t;

         DATEVAL    Time = "2014-01-13 11:48:52";

 

         if( ( t = cnv_date ( Time ) ) == -1 )

                   return-1;

         printf(“时间转换成功\n” );

         return0;

}

 

你可能感兴趣的:(Linux C将文本时间转换成系统格式)