Linux时间戳转换成BCD码(转载)

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 #include <math.h>
  5 /***************************************************************************
  6 *函数名称:Char2Bcd
  7 *函数介绍:字符串转BCD
  8 *输入参数:-buf:指向字符串
  9 *输出参数:无
 10 *返回值  :转换后的双精度值
 11 *修改历史:
 12 ***************************************************************************/
 13 char Char2Bcd(char i_cHexData)
 14 {
 15    char i;
 16    i=((i_cHexData%100)/10)*16+(i_cHexData%10);
 17    return i;
 18 }
 19  
 20 /***************************************************************************
 21 *函数名称:Get_BCDTime7
 22 *函数介绍:转换为BCD码格式时间
 23 *输入参数:-*time:
 24 *输出参数:无
 25 *返回值  :无
 26 *修改历史:
 27 ***************************************************************************/
 28 void Get_BCDTime7(time_t i_tTime,char* o_cpBcdTime)
 29 {
 30     struct tm *time;
 31     time=localtime(&i_tTime);
 32     o_cpBcdTime[0]=Char2Bcd((time->tm_year+1900)/100);
 33     o_cpBcdTime[1]=Char2Bcd((time->tm_year+1900)%100);
 34     o_cpBcdTime[2]=Char2Bcd(time->tm_mon+1);
 35     o_cpBcdTime[3]=Char2Bcd(time->tm_mday);
 36     o_cpBcdTime[4]=Char2Bcd(time->tm_hour);
 37     o_cpBcdTime[5]=Char2Bcd(time->tm_min);
 38     o_cpBcdTime[6]=Char2Bcd(time->tm_sec);
 39 }
 40  
 41 /***************************************************************************
 42 *函数名称:Get_CurBCDTime6 
 43 *函数介绍:转换为BCD码格式时间
 44 *输入参数:-*time:
 45 *输出参数:无
 46 *返回值  :无
 47 *修改历史:
 48 ***************************************************************************/
 49 void Get_BCDTime6(time_t i_tTime,char* o_cpBcdTime)
 50 {
 51     struct tm *time;
 52     time=localtime(&i_tTime);
 53     o_cpBcdTime[0]=(unsigned char)((((time->tm_year-100)/10)<<4)|((time->tm_year-100)%10));
 54     o_cpBcdTime[1]=(unsigned char)((((1+time->tm_mon)/10)<<4)|((1+time->tm_mon)%10));
 55     o_cpBcdTime[2]=(unsigned char)((((time->tm_mday)/10)<<4)|((time->tm_mday)%10));
 56     o_cpBcdTime[3]=(unsigned char)((((time->tm_hour)/10)<<4)|((time->tm_hour)%10));
 57     o_cpBcdTime[4]=(unsigned char)((((time->tm_min)/10)<<4)|((time->tm_min)%10));
 58     o_cpBcdTime[5]=(unsigned char)((((time->tm_sec)/10)<<4)|((time->tm_sec)%10));
 59 }
 60  
 61 /***************************************************************************
 62 *函数名称:Get_CurBCDTime6
 63 *函数介绍:获取当前BCD码格式时间
 64 *输入参数:-*time:
 65 *输出参数:无
 66 *返回值  :无
 67 *修改历史:add by lianzihao 2016-09-13
 68 ***************************************************************************/
 69 void Get_CurBCDTime6(char* o_cpBcdTime)
 70 {
 71         time_t lt=0;   
 72         lt = time(NULL);
 73         struct tm * pCurTime = localtime(&lt);
 74         o_cpBcdTime[0]=(unsigned char)((((pCurTime->tm_year-100)/10)<<4)|((pCurTime->tm_year-100)%10));
 75         o_cpBcdTime[1]=(unsigned char)((((1+pCurTime->tm_mon)/10)<<4)|((1+pCurTime->tm_mon)%10));
 76         o_cpBcdTime[2]=(unsigned char)((((pCurTime->tm_mday)/10)<<4)|((pCurTime->tm_mday)%10));
 77         o_cpBcdTime[3]=(unsigned char)((((pCurTime->tm_hour)/10)<<4)|((pCurTime->tm_hour)%10));
 78         o_cpBcdTime[4]=(unsigned char)((((pCurTime->tm_min)/10)<<4)|((pCurTime->tm_min)%10));
 79         o_cpBcdTime[5]=(unsigned char)((((pCurTime->tm_sec)/10)<<4)|((pCurTime->tm_sec)%10));
 80 }
 81 /***************************************************************************
 82 *函数名称:Get_CurBCDTime7
 83 *函数介绍:获取当前BCD码格式时间
 84 *输入参数:-*time:
 85 *输出参数:无
 86 *返回值  :无
 87 *修改历史:
 88 ***************************************************************************/
 89 void Get_CurBCDTime7(char* o_cpBcdTime)
 90 {
 91     time_t tt;
 92     struct tm *curtime;
 93     time(&tt);
 94     curtime=localtime(&tt);
 95     o_cpBcdTime[0]=Char2Bcd((curtime->tm_year+1900)/100);
 96     o_cpBcdTime[1]=Char2Bcd((curtime->tm_year+1900)%100);
 97     o_cpBcdTime[2]=Char2Bcd(curtime->tm_mon+1);
 98     o_cpBcdTime[3]=Char2Bcd(curtime->tm_mday);
 99     o_cpBcdTime[4]=Char2Bcd(curtime->tm_hour);
100     o_cpBcdTime[5]=Char2Bcd(curtime->tm_min);
101     o_cpBcdTime[6]=Char2Bcd(curtime->tm_sec);
102 }
103  
104 #define LEN        7
105 int main(void)
106 {
107     int i = 0;
108     char l_arrBcdtime[LEN] ={0};
109     Get_CurBCDTime7(l_arrBcdtime);
110     printf("Get_CurBCDTime7 :");
111     for(i=0;i<LEN;i++)
112     {
113         printf("%02x",l_arrBcdtime[i]);
114     }
115  
116     Get_CurBCDTime6(l_arrBcdtime);
117     
118     printf("\nGet_CurBCDTime6 :");
119     for(i=0;i<LEN-1;i++)
120     {
121         printf("%02x",l_arrBcdtime[i]);
122     }
123     printf("\n");
124     return 0;
125 }

运行结果:

 注:原文链接:https://blog.csdn.net/li_wen01/article/details/78990124


 

posted on 2018-07-20 08:54  Perfect_Code  阅读(2297)  评论(0编辑  收藏  举报