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