Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Отсюда: http://we.easyelectronics.ru/Soft/konvertaciya-vremeni.html 

Проверено:

const unsigned char numofdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};

void UNIXToDate(unsigned int utc){
  struct RTC* rtc = & rtcVar;
  unsigned int n,d,i;
  rtc->sec = (unsigned char)(utc % 60); utc /= 60;
  rtc->min = (unsigned char)(utc % 60); utc /= 60;
  rtc->hour = (unsigned char)(utc % 24); utc /= 24;
  rtc->wday = (unsigned char)((utc + 4) % 7);
  rtc->year = (unsigned int)(1970 + utc / 1461 * 4); utc %= 1461;
  n = ((utc >= 1096) ? utc - 1 : utc) / 365;
  rtc->year += n;
  utc -= n * 365 + (n > 2 ? 1 : 0);
  for (i = 0; i < 12; i++) {
    d = numofdays[i];
    if (i == 1 && n == 2) d++;
    if (utc < d) break;
    utc -= d;
   }
  rtc->month = (unsigned char)(1 + i);
  rtc->mday = (unsigned char)(1 + utc);
}

/////// Фрагмент с winAPI для отображения
inWindow = GetDlgItem(hwndDlg,4001);
GetWindowText(inWindow, txt, 20);
Seconds = atoi(txt);
                    UNIXToDate(Seconds);
inWindow = GetDlgItem(hwndDlg,4002);
wsprintf(txt,"%d:%d:%d  %d.%d.%d",rtcVar.hour,rtcVar.min,rtcVar.sec,rtcVar.mday,rtcVar.month,rtcVar.year);
SetWindowText(inWindow,txt);
///-------------------------------
Прога