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(<); 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
原文:https://www.cnblogs.com/shiyk/p/9339627.html