ðÒÉ×ÅÔ, Sergey !
22 Oct 05 , 12:15 Sergey Davydov ÐÉÓÁÌ Ë Nickita A Startcev:
NS>> HÕÖÎÁ ÂÉÂÌÉÏÔÅÞËÁ, ËÏÔÏpÁÑ ÐÅpÅ×ÏÄÉÌÁ ÂÙ ×pÅÍÑ × ÓÅËÕÎÄÁÈ Ó NS>> ÏÐpÅÄÅÌÅÎÎÏÇÏ ÍÏÍÅÎÔÁ × ÇÏÄ-ÍÅÓÑÃ-ÞÉÓÌÏ-ÞÁÓ-ÍÉÎÕÔÁ-ÓÅËÕÎÄÁ. ëÕÄÁ NS>> ÓÍÏÔpÅÔØ? SD> // ÎÁÐpÉÍÅp, Ó 1 ÑÎ× 2000 (TZ ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ) SD> // ËÏÌÉÞÅÓÔ×Ï ÄÎÅÊ ÐÏ ÍÅÓÑÃÁÍ SD> unsigned char ymon[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, SD> 31};
[skip]
óÐÁÓÉÂÏ. ÷ÏÔ, ËÓÔÁÔÉ, ×ÁÒÉÁÎÔ ÉÚ celib: ËÏÄ ÉÓÐÏÌØÚÕÅÔ Ä×Å ÒÁÚÎÙÅ ÔÁÂÌÉÃÙ ÄÌÑ ×ÉÓÏËÏÓÎÙÈ É ÎÅ×ÉÓÏËÏÓÎÙÈ ÌÅÔ.
int _lpdays[] = {
-1, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
int _days[] = {
-1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364 };
static struct tm tb = { 0 };
struct tm * xcegmtime(const time_t *timp) { long caltim = *timp; int islpyr = 0; int tmptim; int *mdays;
struct tm *ptb = &tb;
if ( caltim < 0L ) return(NULL);
tmptim = (int)(caltim / _FOUR_YEAR_SEC); caltim -= ((long)tmptim * _FOUR_YEAR_SEC);
tmptim = (tmptim * 4) + 70;
if ( caltim >= _YEAR_SEC ) { tmptim++; caltim -= _YEAR_SEC;
if ( caltim >= _YEAR_SEC ) { tmptim++; caltim -= _YEAR_SEC;
if ( caltim >= (_YEAR_SEC + _DAY_SEC) ) { tmptim++; caltim -= (_YEAR_SEC + _DAY_SEC); } else { islpyr++; } } }
ptb->tm_year = tmptim;
ptb->tm_yday = (int)(caltim / _DAY_SEC); caltim -= (long)(ptb->tm_yday) * _DAY_SEC;
if ( islpyr ) mdays = _lpdays; else mdays = _days;
for ( tmptim = 1 ; mdays[tmptim] < ptb->tm_yday ; tmptim++ ) ;
ptb->tm_mon = --tmptim;
ptb->tm_mday = ptb->tm_yday - mdays[tmptim];
ptb->tm_wday = ((int)(*timp / _DAY_SEC) + _BASE_DOW) % 7;
ptb->tm_hour = (int)(caltim / 3600); caltim -= (long)ptb->tm_hour * 3600L;
ptb->tm_min = (int)(caltim / 60); ptb->tm_sec = (int)(caltim - (ptb->tm_min) * 60);
ptb->tm_isdst = 0; return( (struct tm *)ptb ); }
. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ÷ÙÐÏÌÚÅÎØ ÒÏÄÕ ÖÅÎÓËÏÇÏ ÐÏÄÌÏ ÎÁÒÕÛÉÌ ïÂÒÑÄ þÉÓÔÏÐÉÓÁÎÉÑ