Цитата(-=Sergei=- @ Jul 8 2010, 22:43)

Есть счетчик с секундами, как из них вычислить время и дату исходя из того что нулевое значение например 1 января 1980 года ?
Ну и считайте: в минуте 60 сек, далее 60 мин, 24часа, далее дни, месяцы и годы с учетом количества дней в месяцах и добавочном дне високосных годах. Вопрос то в чем? Для примера :
Код
// ян фв мр ап мй ин ил ав сн ок нб дек
unsigned int code mounth_end[12]={31,28,31,30,31,30,31,31,30,31,30,31};
unsigned char xdata RTCcapture[6];
enum {YEAR,MONTH,DAY,HOUR,MINUTE};
void ConvertArrToTime(void)
{
unsigned long ticks;
unsigned char i;
ticks=*(unsigned long*)RTCcapture;
ticks/=60;
RTCcapture[MINUTE]=ticks%60;
ticks/=60;
RTCcapture[HOUR]=ticks%24;
ticks/=24;
RTCcapture[YEAR]=ticks/(365*4+1); //учитываем високосные года
ticks-=RTCcapture[YEAR]*(365*4+1);
i=ticks/365;
ticks-=i*365;
RTCcapture[YEAR]=RTCcapture[YEAR]*4+i;
for(i=0;i<11;i++)
{
if(i==1 && !(RTCcapture[YEAR]&0x03)) //високосный февраль
{if(ticks>=29)ticks-=29;else break;}
else
{if(ticks>=mounth_end[i])ticks-=mounth_end[i];else break;}
}
RTCcapture[MONTH]=i+1;
RTCcapture[DAY]=ticks+1;
}
Но учтите, что код писан левой ногой и очень давно на заре туманной юности

, даю только для примера (нулевая точка 2000год, код для c51). Вы пишите более рационально - без лишних делений, глобальных переменных и т.д.
ЗЫ Сейчас самому страшен такой код, хотя я не так далеко и продвинулся, может стереть пример, дабы людей не смешить