[an error occurred while processing this directive]
|
дату в лонг запросто в меге на С.
Декодирование в компе.
Есть дата влонг на asm PIC18
/******************************************************************************
* DESCRIPTION:
* convert Date and Time to long seconds
*****************************************************************************/
u32_t PDRV_DT_Long (PDRV_Time_t *pdt) {
u32_t c ;
u32_t ya ;
u32_t res ;
u16_t year ;
u8_t month;
month = pdt->month;
year = pdt->year;if(month > 2) {
month -= 3;
} else {
month += 9;
year--;
}c = year / 100;
ya = year - 100 * c;
res = (146097 * c)/4 + (1461 * ya)/4 + (153 * month + 2)/5 + pdt->day;
return (res - 731000l) * 86400l + (pdt->hour * 60l + pdt->minute) * 60l + pdt->sec;
}
/******************************************************************************
* DESCRIPTION:
* convert long seconds to Date and Time
*****************************************************************************/
void PDRV_Long_DT(u32_t j,PDRV_Time_t *pdt) {
REG_t u32_t d,m,y;
REG_t u32_t dat,t;
dat = j/86400l;
t = j - (dat * 86400l);
dat += 731000;
y = (4 * dat - 1) / 146097l;
d = (4 * dat - 1 - 146097l * y) / 4l;
dat = (4 * d + 3) / 1461;
d = (4 * d + 7 - 1461 * dat) / 4l;
m = (5 * d - 3) / 153;
d = (5 * d + 2 - 153 * m) / 5l;
y = 100 * y + dat;
if (m < 10)
m += 3;
else {
m -= 9;
y++;
}
pdt->month = m;
pdt->year = y;
pdt->day = d;
pdt->sec = t % 60l; t /= 60l;
pdt->hour = t / 60l;
pdt->minute = t % 60l;
}
E-mail: info@telesys.ru