[an error occurred while processing this directive]
|
#define visocosn(year) ((year % 4) ? 0 : 1)
typedef struct
{
uchar ucSec; //00-59
uchar ucMin; //00-59
uchar ucHour; //00-23
uchar ucDay; //01-31
uchar ucMonth; //01-11
uchar ucYear; //00-99
}RTC_DATA;
//перевод числа секунд с 1 января 1970 года в параметры структуры RTC_DATA.
void Sec2Date(RTC_DATA *pDest, ulong ulSec)
{
ulong dl;
if ( ulSec >= 946684800L ) {
ulSec -= 946684800L; //Дата после 1.01.2000
pDest->ucYear = 0;
}//if( )
else {
pDest->ucYear = 70;//Дата до 1.01.2000
}//else ( )
for ( dl = 365L;
ulSec >= (dl = 86400L * (365L + visocosn(pDest->ucYear))) ;
ulSec -= dl, pDest->ucYear++ );
for ( pDest->ucMonth = 1;
ulSec >= ( dl = 86400L *
(mon_len[pDest->ucMonth - 1] + ((pDest->ucMonth == 2) ?
visocosn(pDest->ucYear) : 0))); ulSec -= dl, pDest->ucMonth++);
pDest->ucDay = ulSec / (86400L) + 1;
ulSec %= 86400L;
pDest->ucHour = ulSec / 3600L;
ulSec %= 3600L;
pDest->ucMin = ulSec / 60L;
ulSec %= 60L;
pDest->ucSec = ulSec;
}
E-mail: info@telesys.ru