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

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

Unix时间戳:

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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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 <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
/***************************************************************************
*函数名称: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);
&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值