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;

}