代码使用的是HAL库
const u8 Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const u16 monDays[12] = {0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
u32 time2Stamp(RTC_DateTypeDef date, RTC_TimeTypeDef time) //北京时间转时间戳
{
u32 result;
u16 Year=date.Year+2000;
result = (Year - 1970) * 365 * 24 * 3600 + (monDays[date.Month-1] + date.Date - 1) * 24 * 3600 + (time.Hours-8) * 3600 + time.Minutes * 60 + time.Seconds;
printf("[%u]",result);
result += (date.Month>2 && (Year % 4 == 0) && (Year % 100 != 0 || Year % 400 == 0))*24*3600; //闰月
printf("[%u]",result);
Year -= 1969;
result += (Year/4 - Year/100 + Year/400)*24 * 3600; //闰年
return result;
}
void stamp2Time(u32 stamp) //时间戳转北京时间
{
RTC_DateTypeDef date;
RTC_TimeTypeDef time;
u32 days;
u16 leap_num;
time.Seconds = stamp