资产监测设备使用时,设置具体指定日期天数计算

Posted 瑞奇Ricky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资产监测设备使用时,设置具体指定日期天数计算相关的知识,希望对你有一定的参考价值。

近期笔者在进行资产监测设备,该设备主要是通过技术实现远程对资产的状态进行获取,比如远程对资产的位置进行实时获取,或者定时获取资产所处环境的温湿度、运动情况等。

有些资产监测设备单片机RTC采用的是BCD码,从对应寄存器拿取数据,因此无法获得对应CNT天数,以下未获取距离设定日期差距的天数。

​//BCD码转十进制函数

uint8_t BCD_Decimal(uint8_t bcd)
{
uint8_t Decimal;
Decimal = bcd>>4;
return(Decimal=Decimal10+(bcd&=0x0F));
}
//功能:十进制转BCD码
uint8_t decimal_bcd_code(uint8_t decimal)//十进制转BCD码
{
uint8_t sum = 0, i; //i计数变量,sum返回的BCD码
for ( i = 0; decimal > 0; i++)
{
sum |= ((decimal % 10 ) << ( 4
i));
decimal /= 10;
}
return sum;
}
//获取计数器值
uint32_t Get_RTCCount(stc_rtc_time_t RTC_Time)
{
uint32_t Count,CNT;
uint8_t Pre_year =20;
//计算年数
CNT = BCD_Decimal(RTC_Time->u8Year)-Pre_year;
while(CNT)
{
if(Rtc_CheckLeapYear(Pre_year))
Count += 366
86400;
else
Count += 365*86400;
Pre_year +=1;
CNT -=1;
}
//计算月数
CNT = BCD_Decimal(RTC_Time->u8Month)-1;
while(CNT–)
{
Count += Get_Month_Max_Day(RTC_Time->u8Year,CNT)*86400;
}
//计算剩余天数
Count += (BCD_Decimal(RTC_Time->u8Day)-1)*86400;
Count += (BCD_Decimal(RTC_Time->u8Hour)-1)*3600;
Count += (BCD_Decimal(RTC_Time->u8Minute)-1)*60;
Count += BCD_Decimal(RTC_Time->u8Second);

return Count;
}

以上是关于资产监测设备使用时,设置具体指定日期天数计算的主要内容,如果未能解决你的问题,请参考以下文章

mysql: 如何计算指定日期到当前日期之间的天数

excel表格怎么算日期天数

使用 LocalDate 类计算指定天数的日期差异

excel计算当月天数的公式,是怎么弄的?

SQL 计算两个日期相差多少天数的函数

关于如何通过日期计算天数