在嵌入式构造时间戳的应用中,如何用C语言编写一个输出时间间隔的函数

#include <stdio.h>
#define u8 unsigned char
#define u32 unsigned int
typedef struct
{
u8 hour;
u8 min;
u8 sec;
u32 w_year;
u8 w_month;
u8 w_date;
}_calendar_obj;

_calendar_obj c0={0,0,0,19,1,1};//定义计算的基准时间
u8 momth_day_num2019[]={31,28,31,30,31,30,31,31,30,31,30,31};

char timecount(_calendar_obj c,u32 *day_num,u32 sec_num)
{
u8 i=0;
//小于基准时间返回-1
if(c.w_year<c0.w_year||c.w_month<c0.w_month||c.w_year!=c0.w_year)
return -1;
else if(c.w_monthc0.w_month)
{
if(c.w_date<c0.w_date)//月
return -1;
else if(c.w_date
c0.w_date)
{
if(c.hour<c0.hour)
return -1;
else if(c.hour==c0.hour&&c.sec<c0.sec)
return -1;
}
}
else
{
//先算差的天数
for(i=0;i<(c.w_month-1);i++)
day_num=day_num+momth_day_num2019[i];
day_num=day_num+(c.w_date-c0.w_date);
sec_num=c.hour60
60+c.min
60+c.sec-c0.hour
60
60-c0.min
60-c0.sec;
printf("%d day + %d s\n",*day_num,*sec_num);
return 1;
}
}

//第二个参数时间后于第一个
char diftime(_calendar_obj c1,_calendar_obj c2)
{
u32 day_num1=0,sec_num1=0,day_num2=0,sec_num2=0;

if(timecount(c1,(&day_num1),(&sec_num1))<0)
{
printf(“ERROR”);//小于基准时间
return 0;
}
if(timecount(c2,(&day_num2),(&sec_num2))<0)
{
printf(“ERROR”);//小于基准时间
return 0;
}

day_num1=day_num2-day_num1;

if(sec_num2<sec_num1)
{
day_num1=day_num1-1;
sec_num2=sec_num2+246060;
}
sec_num1=sec_num2-sec_num1;
printf(“difference:%d day + %d s\n”,day_num1,sec_num1);

}

int main()
{
_calendar_obj calendar={21,39,20,19,4,21};
_calendar_obj cc={24,59,59,19,3,1};
_calendar_obj c5={24,59,59,19,4,1};

diftime(cc,c5);

return 0;  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值