minix中時間轉換的實現(asctime c)

2021-09-08 17:00:21 字數 1694 閱讀 4607

在minix2.0源**中,有相當經典的時間轉換函式實現(src\ src\ lib\ ansi\ asctime.c),今天我們就來分析一下asctime.c中的原始碼

首先引入幾個相關的標頭檔案:

1、time.h 主要的結構體與相關定義:

struct

tm ;

char *asctime(const

struct tm *_timeptr)

2、loc_time.h

#define    year0        1900        /*第一年*/

#define epoch_yr 1970 /* epoch = jan 1 1970 00:00:00 */

#define secs_day (24l * 60l * 60l)

#define leapyear(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))

#define yearsize(year) (leapyear(year) ? 366 : 365)

#define firstsunday(timp) (((timp)->tm_yday - (timp)->tm_wday + 420) % 7)

#define firstdayof(timp) (((timp)->tm_wday - (timp)->tm_yday + 420) % 7)

#define time_max ulong_max

#define abb_len 3

extern

const

int _ytab[2][12

];extern

const

char *_days;

extern

const

char *_months;

void _tzset(void

);unsigned _dstget(

struct tm *timep);

extern

long

_timezone;

extern

long

_dst_off;

extern

int_daylight;

extern

char *_tzname[2];

3、asctime.c

#include    #include    

#include

"loc_time.h

"#define date_str "??? ??? ?? ??:??:?? ????\n" //

時間格式

static

char * two_digits(register char *pb, int i, int

nospace)

static

char * four_digits(register char *pb, int

i)

char *asctime(const

struct tm *timeptr) //

把timeptr指向的tm結構體中儲存的時間轉換為字串格式返回。

minix中atoi atol atof的實現

在minix2.0源 中,有將字串型別轉換為int long double型別的函式實現,相關的實現函式分別在atoi.c atol.c atof.c檔案中,我們來逐一學習其中的原始碼 int atoi register const char nptr while isdigit nptr retu...

Minix中的字元判定ctype c

minix中關於如何判定乙個字元的型別,如大寫 小寫 數字 如果採用傳統的方法,如判斷乙個字母大寫的方法 if c a c z return true 但是如果判斷乙個字元是數字或是字母,則採用下面的 if c z c a c z c a c 0 c 9 return true 如果假設更多的侷限,...

js中的時間轉換

js毫秒時間轉換成日期時間 var oldtime new date 2012 12 25 20 11 11 gettime 得到毫秒數 不是上面格式的時間需要轉換 starttime 2012 12 25 20 17 24 starttime starttime.replace new regex...