在minix2.0源**中,有相當經典的時間轉換函式實現(src\ src\ lib\ ansi\ asctime.c),今天我們就來分析一下asctime.c中的原始碼
首先引入幾個相關的標頭檔案:
1、time.h 主要的結構體與相關定義:
structtm ;
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...