home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1996 December / CD_shareware_12-96.iso / DOS / Programa / CCDL122.ZIP / CLIBS / TIME / GMTIME.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-08  |  896 b   |  41 lines

  1. #include <time.h>
  2. #include <stdio.h>
  3.  
  4. char _monthdays[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
  5. struct tm *gmtime(const time_t *time)
  6. {
  7.     char buf[STACKPAD];
  8.     struct tm rv;
  9.     time_t t = *time;
  10.     int temp1,x=0;
  11.     rv.tm_sec = t %60;
  12.     t/=60;
  13.     rv.tm_min = t %60;
  14.     t /=60;
  15.     rv.tm_hour = t %24;
  16.     t /=24;
  17.     rv.tm_yday = t;
  18.     rv.tm_wday = (t +4 )%7;
  19.     rv.tm_year = 70+(rv.tm_yday /365);
  20.     rv.tm_yday = rv.tm_yday % 365;
  21.     rv.tm_yday -= (rv.tm_year - 69)/4;
  22.     if (rv.tm_yday <0) {
  23.         rv.tm_yday = 364;
  24.         rv.tm_year--;
  25.         if (!((rv.tm_year-72)%4))
  26.             rv.tm_yday++;
  27.     }
  28.     if (rv.tm_yday > 31+28+1 && ((rv.tm_year-72) %4 == 0) && (rv.tm_year != 30)) {
  29.         _monthdays[1] = 29;
  30.     }
  31.     else
  32.         _monthdays[1] = 28;
  33.     temp1 = rv.tm_yday;
  34.     rv.tm_mon = -1;
  35.     while (temp1 >=0) 
  36.         temp1-=_monthdays[++rv.tm_mon];
  37.     rv.tm_mday = temp1 + _monthdays[rv.tm_mon]+1;
  38.     rv.tm_isdst = 0;
  39.     return rv;
  40. }
  41.