- 计算一个月中的最大天数
采用查表法来实现,润年计算方法只计算被4整除,这样至少适应于2000年~2099年之间,对有生之年也够用
typedef struct
{
uint8_t second; //秒
uint8_t minute; //分
uint8_t hour; //时
uint8_t day; //日
uint8_t month; //月
uint8_t week; //星期 1-7
uint8_t year; //年
uint8_t timeZone; //时区
}REAL_TIME_T;
//-------------月份对应最大天数--------------------------
static const uint8_t MONTH_DAYNO[]={
0, // dummy
31, // 1月
28, // 2月
31, // 3月
30, // 4月
31, // 5月
30, // 6
31, // 7
31, // 8
30, // 9
31, // 10
30, // 11
31 // 12
};
/**--------------------------------------------------------------
* @brief 计算一个月中的最大天数
* @param REAL_TIME_T *time 指向时间结构体对象
* @returnval uint8_t 返回一个月中最大的天数
*----------------------------------------------------------------*/
uint8_t getMaxDays(REAL_TIME_T *time)
{
uint8_t days = MONTH_DAYNO[time->month];
if(((time->year & 0x03)==0) && (time->month == 2)) //2月润年为29天
{
days++;
}
return days;
}