一直對時間函數(shù)有點(diǎn)興趣,今天打開time.h看了一下.發(fā)現(xiàn)內(nèi)容也不是太多.于是看了看.這是c庫里的.C++的,改日再看.一邊看一邊寫了總結(jié),呵呵,效果不錯.
在 time.h 文件中。首先我們可以看到
typedef long time_t; 這就可以明確地知道 time_t是一個long型
而為什么要這樣做呢,當(dāng)然是為了方便代碼的閱讀和理解了
typedef long clock_t;也是一樣的含義
另外,還有一個用于存放時間的結(jié)構(gòu)體
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
首先來看第一個必須用到的函數(shù)
time_t time (time_t *timer);
此它用來取得當(dāng)前的時間相于對1900年所經(jīng)歷的秒數(shù)
當(dāng)取得這個秒數(shù)以后,我們就可以用其它函數(shù)來推算現(xiàn)在的時間了。
struct tm * localtime(const time_t *timer);
見名知意。這個函數(shù)是用來取得當(dāng)?shù)貢r間的。參數(shù)即為我們用
time_t time (time_t *timer);求得的秒數(shù)。返回值是tm
結(jié)構(gòu),這樣我們可以通過自己的一些方法取得里面的值。比如寫一個
char * format(const struct tm ) 來格式化成可以輸入的字符串格式
當(dāng)然,有專門用于格式化的函數(shù),下面一個便是。
char asctime (const struct tm *tblock);
這個函數(shù)用來將取得的時間tm結(jié)構(gòu)格式化
顯示格式如下:Mon Dec 29 23:29:04 2008
char ctime (const time_t *time);
此函數(shù)也是用來取得本地時間。只是返回類型即為已經(jīng)被asctime()函數(shù)格式化的字符串
顯示格式即如上所說的Mon Dec 29 23:29:04 2008
struct tm * gmtime(const time_t *timer);
此函數(shù)用來獲得美國官方日期。返回類型為tm。可以用asctime()格式后輸出,
也可以自己格式化
double difftime(time_t time2, time_t time1);
此函數(shù)用來計(jì)算time2與time1的差值(time2-time1)。返回雙精度浮點(diǎn)型的數(shù)
clock_t clock(void);
這是一個比較有趣的函數(shù)。兩次調(diào)用它后的差值即為程序所執(zhí)行的時間。
注意clock()函數(shù)每1/1000秒記數(shù)一次,即為毫秒。
比如 start = clock();
for(int i=0;i<100;i++){}
end = clock();
那我們用cost_time = end - start;即可以得到for循環(huán)所花費(fèi)的毫秒數(shù)
關(guān)于
int stime(time_t *tp);
設(shè)置時間
void tzset(void);
Unix下兼容時間函數(shù),改日再議