C 程式設計/time.h/函式參考
asctime(), asctime_r(),
在 C 語言中,函式 asctime() 包含在庫函式 time.h 中。此函式將時間結構轉換為 ASCII 字串。它將以 Day Month Date Time Year\n\0 的形式顯示。例如 Sun Sep 5 10:56:01 2011\n\0。此函式將分解的時間值轉換為與 ctime() 格式相同的字串。函式 asctime_r() 執行相同操作,但它將字串儲存在使用者提供的緩衝區中,該緩衝區至少有 26 位元組的記憶體。
在 C 程式設計中,使用函式 asctime()、asctime_r()。我們可以透過呼叫函式 gmtime()、gmtime64()、localtime() 來獲取時間。asctime() 函式使用 24 小時制。日期顯示為:mon、tue、wed、thu、fri、sat、sun,月份顯示為:jan、feb、mar、apr、may、jun、jul、aug、sep、oct、nov、dec。換行符 (\n) 和空格 (/0) 佔據字串的最後兩個位置。該字串產生的結果包含正好 26 個字元。asctime() 始終將此字串儲存到同一個位置。每次呼叫此函式時,舊字串都會被覆蓋。此函式的時間從世界標準時間 00:00:00 開始,日期從 1970 年 1 月 1 日開始。
clock_t clock()
此函式返回實現對程序自實現定義的時代(僅與程序呼叫相關)開始以來使用的處理器時間的最佳近似值。
在計算中,ctime 是自 1970 年 1 月 1 日 0:00:00 UTC 以來經過的秒數。通常儲存為 32 位有符號整數,此數字用於在許多計算機和作業系統(如 Linux 和 UNIX 變體)以及某些程式語言中精確定位日期。它將在 2038 年溢位並導致 2038 年問題;一些人預計這將類似於 Y2K 的有利可圖的非事件。
ctime 也是一個 Unix 庫呼叫,它以人類可讀的 ASCII 字串形式返回本地時間。
Unix 檔案系統中的 ctime 是一個檔案屬性,它指示檔案的 inode 最後修改的時間。
C 庫為我們提供了 difftime 函式,它返回兩個日曆日期之間經過的時間。此函式在標頭檔案 time.h 中定義。它返回差值 (t2 - t1),其中 t1 是初始時間,t2 是結束時間,以秒為單位,作為雙精度浮點數。此函式很重要,因為型別 time_t 上沒有定義通用算術運算。
函式 difftime 在標頭檔案“time.h”中宣告。
語法:double difftime(time_t time2, time_t time1);
序言:difftime 從 time2 中減去 time1 以計算 time1 和 time2 之間經過的時間。該值以經過的秒數計算。引數通常透過對 time 函式的兩次呼叫獲得。
返回值:返回 time1 和 time2 之間的差值(以秒為單位)。
示例
main()
{
int sec;
time_t start_time, finish_time;
time(&start_time); //in time.h header file
for ( sec = 1; sec <= 6; sec++)
{
printf("%d\r", sec);
sleep(1);
}
time(&finish_time);
printf("\nDifference is %.2f seconds",difftime(finish_time, start_time));
}
輸出
6
差值為 6.00 秒
struct tm *gmtime(const time_t *timer)
此函式將自紀元以來以秒為單位的時間(timer 指向)轉換為分解的時間,以協調世界時 (UTC) 表示。
localtime() 是 time.h 中的庫函式。它將日曆時間轉換為本地時間。
#include <time.h>
struct tm * localtime ( const time_t * ptr_time );
引數
指標 'ptr_time' 是指向包含日曆時間的 'time_t' 物件的指標。
返回值
函式 localtime() 返回指向 tm 結構的指標。tm 結構包含時間資訊。
函式 localtime() 使用指標 ptr_time 指向的時間來填充 tm 結構,其中包含表示相應本地時間的數值。如果呼叫此函式,它將以以下形式返回本地時間
"day Month date hr:min:sec year"((輸出)).
time_t mktime(struct tm *timeptr);
此函式將由 timeptr 指向的結構體中表示為本地時間的分解時間轉換為自紀元以來的時間值,該值的編碼與 time() 函式返回值的編碼相同。結構體中 tm_wday 和 tm_yday 成分的原始值將被忽略,其他成分的原始值不受 <time.h> 中描述的範圍限制。