Linux 各种BCD时间与Unix时间戳格式转换

您所在的位置:网站首页 linux时间格式转换 Linux 各种BCD时间与Unix时间戳格式转换

Linux 各种BCD时间与Unix时间戳格式转换

2024-01-14 21:38| 来源: 网络整理| 查看: 265

    在Linux C或C++编程中,因为应用场景的不同,经常会遇到各种时间之间的装换,有时需要BCD时间,有时需要Unix时间戳,也有叫绝对时间的。这里介绍几种时间格式转换的应用。

Unix时间戳:

    Unix时间戳是一个绝对值,表示距离时间(1970-1-1, 00:00:00)的秒数。在C\C++ 语言中,用数据类型time_t 表示时间戳,time_t 本质上是一个long int。获取当前时间的时间戳代码如下所示:

#include #include #include int main(int argc, const char * argv[]) { time_t now; time(&now); printf("Now:%ld \n",now); }

行结果为:

biao@ubuntu:~/test/test$ ./a.out Now:1515229831 biao@ubuntu:~/test/test$ BCD时间:

    所谓BCD时间就是以BCD码形式表示的时间。比如整型0x201801061647 表示2018年1月6日16时47分。

下面举例几种BCD时间的转换:

#include #include #include #include /*************************************************************************** *函数名称:Char2Bcd *函数介绍:字符串转BCD *输入参数:-buf:指向字符串 *输出参数:无 *返回值 :转换后的双精度值 *修改历史: ***************************************************************************/ char Char2Bcd(char i_cHexData) { char i; i=((i_cHexData%100)/10)*16+(i_cHexData%10); return i; } /*************************************************************************** *函数名称:Get_BCDTime7 *函数介绍:转换为BCD码格式时间 *输入参数:-*time: *输出参数:无 *返回值 :无 *修改历史: ***************************************************************************/ void Get_BCDTime7(time_t i_tTime,char* o_cpBcdTime) { struct tm *time; time=localtime(&i_tTime); o_cpBcdTime[0]=Char2Bcd((time->tm_year+1900)/100); o_cpBcdTime[1]=Char2Bcd((time->tm_year+1900)%100); o_cpBcdTime[2]=Char2Bcd(time->tm_mon+1); o_cpBcdTime[3]=Char2Bcd(time->tm_mday); o_cpBcdTime[4]=Char2Bcd(time->tm_hour); o_cpBcdTime[5]=Char2Bcd(time->tm_min); o_cpBcdTime[6]=Char2Bcd(time->tm_sec); } /*************************************************************************** *函数名称:Get_CurBCDTime6 *函数介绍:转换为BCD码格式时间 *输入参数:-*time: *输出参数:无 *返回值 :无 *修改历史: ***************************************************************************/ void Get_BCDTime6(time_t i_tTime,char* o_cpBcdTime) { struct tm *time; time=localtime(&i_tTime); o_cpBcdTime[0]=(unsigned char)((((time->tm_year-100)/10)tm_mon)/10)tm_mday)/10)tm_hour)/10)tm_min)/10)tm_sec)/10)tm_year+1900)%100); o_cpBcdTime[2]=Char2Bcd(curtime->tm_mon+1); o_cpBcdTime[3]=Char2Bcd(curtime->tm_mday); o_cpBcdTime[4]=Char2Bcd(curtime->tm_hour); o_cpBcdTime[5]=Char2Bcd(curtime->tm_min); o_cpBcdTime[6]=Char2Bcd(curtime->tm_sec); } #define LEN 7 int main(void) { char l_arrBcdtime[LEN] ={0}; Get_CurBCDTime7(l_arrBcdtime); printf("Get_CurBCDTime7 :"); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3