在网站上找了一些软件时钟程序,在秒时与日历转换时,大多是逐年计算,计算周期会随着年份增加,而增多。于是自己写了一个简化的秒时与日历转换程序,按闰年周期进行除法运算,计算周期固定,不随秒时与基础年时间差增长而增长,效率明显提高。
程序带有闰年计算与星期计算,基础年为2001年1月1日0时0分0秒,算法可支持到3200年2月28日23时59分59秒。但由于RTC计数器是32位,所以硬件只能支持到2137年2月7日6时28分15秒,也足够使用了。
以下为程序代码:
/****************************************************************************
* 函数名: GetRTCWeek
* 功 能: 计算Week
* 输 入: 秒时
* 输 出: 无.
* 返 回: 星期
*/
//u8 GetRTCWeek(RTC_T *_tRtc)
u8 GetRTCWeek(u32 lDay)
{
//u32 lDay;
//lDay = GetSecondFromDateTime(_tRtc)/SECOND_OF_DAY;
lDay /= SECOND_OF_DAY;
lDay += RTC_BASE_WEEK;
lDay %= 7;
return (u8)lDay;
}
/****************************************************************************
* 函