嵌入式 Linux下时间处理问题

   struct tm *tmnow;
    structtimeval tv;
   gettimeofday(&tv,NULL);//获得当前的秒数和微妙
    tmnow =localtime(&tv.tv_sec);//把当前的秒数转换成一种时间格式
   eric_print("build time:"__DATE__"  "__TIME__"\n");


2013/09/22 15:09:09:965705 build time :Sep  52013  19:26:26
2013/09/22 15:09:09:965800 2013/09/22 15:09:09:965812 rjrm.c200 
2013/09/22 15:09:09:971377 bind port 8551
2013/09/22 15:09:09:971414 socket created
2013/09/22 15:09:09:971435 binded
2013/09/22 15:09:09:971453 begin listen port 8551

#define eric_print(...){print_current_time(); printf(__VA_ARGS__);}
inline void print_current_time(void)
{
    struct tm*tmnow;
    structtimeval tv;
   gettimeofday(&tv,NULL);
    tmnow =localtime(&tv.tv_sec);
  
   printf("d/d/d d:d:d:ld ",\
      tmnow->tm_year+1900, tmnow->tm_mon+1,tmnow->tm_mday,tmnow->tm_hour,\
      tmnow->tm_min, tmnow->tm_sec,tv.tv_usec);
   
}

一、 gmtime和localtime前后使用会有影响

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
 time_t now;
 struct tm *tmutc, *tmlocal;

 
 time(&now);

 
 tmutc = gmtime(&now);

 tmlocal = localtime(&now);


 
 printf("%s标准时间为:\t%s",tmutc->tm_zone, asctime(tmutc));
 
 printf("%s时间为:\t%s",tmlocal->tm_zone, asctime(tmlocal));

 return 0;
}

*******************************************

CST标准时间为: Tue Jan 31 09:23:17 2012
CST时间为:    Tue Jan 31 09:23:17 2012

******************************************

二、 gmtime和localtime分开使用

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
 time_t now;
 struct tm *tmutc, *tmlocal;

 
 time(&now);

 
 tmutc =gmtime(&now); 

 
 printf("%s标准时间为:\t%s",tmutc->tm_zone, asctime(tmutc));

 tmlocal =localtime(&now);
 
 printf("%s时间为:\t%s",tmlocal->tm_zone, asctime(tmlocal));

 return 0;
}

*************************************************

GMT标准时间为: Tue Jan 31 01:24:40 2012
CST时间为:    Tue Jan 31 09:24:40 2012

************************************************

你可能感兴趣的:(嵌入式 Linux下时间处理问题)