C
void ConvertDateTime(uint32_t datetime, RTC_TimeTypeDef* RTC_TimeStruct, RTC_DateTypeDef* RTC_DateStruct){
uint32_t nd;
uint16_t yy, yd, ds = 0;
uint8_t mm;
uint8_t ma[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
nd = datetime / SEC_PER_DAY;
yy = START_YEAR + nd / DAY_PER_YEAR;
yy = yy - (yy / 100) * 100;
if (yy % 4 == 0){ma[1]+=1;}
yd = nd / DAY_PER_YEAR;
yd = nd - (yd * DAY_PER_YEAR + yd / 4);
for (mm=0;(ds<yd)&&(mm<12);mm++){
ds += ma[mm];
}
RTC_DateStruct->RTC_Year = yy;
RTC_DateStruct->RTC_Month = mm;
RTC_DateStruct->RTC_Date = yd - (ds - ma[mm-1]) + 1;
RTC_TimeStruct->RTC_Hours = (datetime % SEC_PER_DAY) / SEC_PER_HOUR;
RTC_TimeStruct->RTC_Minutes = (datetime % SEC_PER_HOUR) / SEC_PER_MINUTE;
RTC_TimeStruct->RTC_Seconds = datetime % SEC_PER_MINUTE;
}