⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctime.c

📁 File system using stacked.
💻 C
字号:
/* Taken from dietlibc. */#include <db.h>static long int timezone;struct tm {  int tm_sec;			/* Seconds.	[0-60] (1 leap second) */  int tm_min;			/* Minutes.	[0-59] */  int tm_hour;			/* Hours.	[0-23] */  int tm_mday;			/* Day.		[1-31] */  int tm_mon;			/* Month.	[0-11] */  int tm_year;			/* Year - 1900. */  int tm_wday;			/* Day of week.	[0-6] */  int tm_yday;			/* Days in year.[0-365]	*/  int tm_isdst;			/* DST.		[-1/0/1]*/  long int tm_gmtoff;		/* Seconds east of UTC.  */  const char *tm_zone;		/* Timezone abbreviation.  */};#if 0struct timezone {  int tz_minuteswest;	/* minutes west of Greenwich */  int tz_dsttime;	/* type of dst correction */};#endif/* days per month -- nonleap! */const short __spm[12] =  { 0,    (31),    (31+28),    (31+28+31),    (31+28+31+30),    (31+28+31+30+31),    (31+28+31+30+31+30),    (31+28+31+30+31+30+31),    (31+28+31+30+31+30+31+31),    (31+28+31+30+31+30+31+31+30),    (31+28+31+30+31+30+31+31+30+31),    (31+28+31+30+31+30+31+31+30+31+30),  };static const char days[] = "Sun Mon Tue Wed Thu Fri Sat ";static const char months[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ";static void num2str(char *c,int i) {  c[0]=i/10+'0';  c[1]=i%10+'0';}static int __isleap(int year) {  /* every fourth year is a leap year except for century years that are   * not divisible by 400. *//*  return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); */  return (!(year%4) && ((year%100) || !(year%400)));}char *asctime_r(const struct tm *t, char *buf) {  /* "Wed Jun 30 21:49:08 1993\n" */  *(int*)buf=*(int*)(days+(t->tm_wday<<2));  *(int*)(buf+4)=*(int*)(months+(t->tm_mon<<2));  num2str(buf+8,t->tm_mday);  if (buf[8]=='0') buf[8]=' ';  buf[10]=' ';  num2str(buf+11,t->tm_hour);//  if (buf[11]=='0') buf[11]=' ';  buf[13]=':';  num2str(buf+14,t->tm_min);  buf[16]=':';  num2str(buf+17,t->tm_sec);  buf[19]=' ';  num2str(buf+20,(t->tm_year+1900)/100);  num2str(buf+22,(t->tm_year+1900)%100);  buf[24]='\n';  return buf;}/* seconds per day */#define SPD 24*60*60struct tm *gmtime_r(const time_t *timep, struct tm *r) {  time_t i;  register time_t work=*timep%(SPD);  r->tm_sec=work%60; work/=60;  r->tm_min=work%60; r->tm_hour=work/60;  work=*timep/(SPD);  r->tm_wday=(4+work)%7;  for (i=1970; ; ++i) {    register time_t k=__isleap(i)?366:365;    if (work>=k)      work-=k;    else      break;  }  r->tm_year=i-1900;  r->tm_yday=work;  r->tm_mday=1;  if (__isleap(i) && (work>58)) {    if (work==59) r->tm_mday=2; /* 29.2. */    work-=1;  }  for (i=11; i && (__spm[i]>work); --i) ;  r->tm_mon=i;  r->tm_mday+=work-__spm[i];  return r;}struct tm* localtime_r(const time_t* t, struct tm* r) {  time_t tmp;  struct timezone tz;  gettimeofday(0, &tz);  timezone=tz.tz_minuteswest*60L;  tmp=*t+timezone;  return gmtime_r(&tmp,r);}char *ctime_r(const time_t *timep, char *buf) {  	struct tm tmp;	localtime_r(timep, &tmp);  	asctime_r(&tmp, buf);	return buf;}

⌨️ 快捷键说明

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