localtime.c

来自「俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)」· C语言 代码 · 共 76 行

C
76
字号
#include <stdlib.h>#include <limits.h>#include <time.h>#include "sys/timefcns.h"struct tm *localtime(const time_t * ptime){  struct tm *ptm;  long ltime;  if ((long) *ptime < 0L)    return (NULL);  tzset();  if ((*ptime > 3 * _DAY_SEC) && (*ptime < LONG_MAX - 3 * _DAY_SEC)) {    ltime = (long) *ptime - _timezone;    ptm = gmtime((time_t *) & ltime);    if (_daylight && _isindst(ptm)) {      ltime -= _dstbias;      ptm = gmtime((time_t *) & ltime);      ptm->tm_isdst = 1;    }  } else {    ptm = gmtime(ptime);    if (_isindst(ptm))      ltime = (long) ptm->tm_sec - (_timezone + _dstbias);    else      ltime = (long) ptm->tm_sec - _timezone;    ptm->tm_sec = (int) (ltime % 60);    if (ptm->tm_sec < 0) {      ptm->tm_sec += 60;      ltime -= 60;    }    ltime = (long) ptm->tm_min + ltime / 60;    ptm->tm_min = (int) (ltime % 60);    if (ptm->tm_min < 0) {      ptm->tm_min += 60;      ltime -= 60;    }    ltime = (long) ptm->tm_hour + ltime / 60;    ptm->tm_hour = (int) (ltime % 24);    if (ptm->tm_hour < 0) {      ptm->tm_hour += 24;      ltime -= 24;    }    ltime /= 24;    if (ltime > 0L) {      ptm->tm_wday = (ptm->tm_wday + ltime) % 7;      ptm->tm_mday += ltime;      ptm->tm_yday += ltime;    } else if (ltime < 0L) {      ptm->tm_wday = (ptm->tm_wday + 7 + ltime) % 7;      if ((ptm->tm_mday += ltime) <= 0) {        ptm->tm_mday += 31;        ptm->tm_yday = 364;        ptm->tm_mon = 11;        ptm->tm_year--;      } else {        ptm->tm_yday += ltime;      }    }  }  return (ptm);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?