C語言時間庫

2021-10-04 15:43:51 字數 4356 閱讀 8410

#include
time_t實際上是長整數型別

定義為:

typedef long time_t;
此型別通常用來表示:從2023年1月1日00:00:00到當前時刻的秒數。

timeval是乙個結構體

定義為:

struct timeval;
其中,tv_sec為epoch(1970-1-1零點零分)到建立struct timeval時的秒數,tv_usec為微秒數,即秒後面的零頭。

tm是乙個結構體

定義為:

struct tm;
原 型

time_t  time(time_t * timer)
功能:獲得當前系統時間,返回time_t型別

兩種使用方式:

(1)

t1=time(null);

t1=time(0);//兩種寫法等價,將空指標傳遞給time()函式,並將time()返回值賦給變數t1

(2)

time(&t2);//將變數t2的位址作為實參傳遞給time()函式,函式自動把結果傳遞給t2,不需要額外的賦值語句。
原 型

struct tm *gmtime(long *clock);
time_t t=time(0);

gmtime(&t);//返回tm*型別

原型

struct tm *localtime(const time_t *clock);
功能:把time_t型別轉換成struct tm,此函式返回的時間經過時區轉換,是本地時間((我們是+8區,比utc多8個小時)),比如,返回的結構體tm代表目前本地時間。

使用舉例

time_t t=time(0);

localtime(&t);//返回tm*型別

原型

char *asctime(const struct tm *tblock);
功能:轉換日期和時間為相應的字串(英文簡寫形式,形如:mon feb 16 11:29:26 2009)。

使用舉例

time_t t=time(0);

char* str1,*str2;

str1=asctime(gmtime(&t));//使用gmtime()獲得tm*

str2=asctime(localtime(&t));//使用localtime()獲得tm*

//兩個字串內容相同

//輸出字串時自帶換行

原型

char *ctime(const time_t *time);
功能:把日期和時間轉換為字串。(英文簡寫形式,形如:mon feb 16 11:29:26 2009)ctime同asctime的區別在於,ctime是通過time_t來生成時間字串,而asctime是通過tm結構來生成時間字串。

使用舉例

time_t t=time(0);

char* str1;

str1=ctime(&t);

//與asctime()獲得的字串內容相同

//輸出字串時自帶換行

原型

time_t mktime(strcut tm * timeptr);
功能:將tm時間結構資料轉換成time_t。

使用舉例

time_t t1=time(0),t2;

struct tm* timer;

timer=gmtime(&t1);//使用gmtime()獲得tm*

t2=mktime(timer);//t1與t2大小稍有不同

原型

double difftime(time_t time1, time_t time0);
功能:計算時間間隔長度,以秒為單位,且只能精確到秒。雖然該函式返回值是double型別的,但這並不說明該時間間隔具有同double一樣的精度,這是由它的引數決定的。

使用舉例

#includetime_t t1=time(0);

sleep(5000);//sleep()函式的單位是毫秒,此條**的意思是程式停止5秒,函式宣告在windows.h中

time_t t2=time(0);

double dt=difftime(t2,t1);//計算兩時間之差,單位是秒

原型

size_t strftime(char *strdest,size_t maxsize,const char *format,const struct tm *timeptr);

/*引數解釋:

strdest是字元指標,用來存放時間轉化之後的字串

maxsize是strdest中能夠存放字元的最大個數

format是格式控制字串

timeptr是struct tm型別的指標型別,用來指向需要轉變的時間變數(struct tm型別)

返回值:該函式返回向strdest指向的字串中放置的字元數。

*//*

格式控制命令

%a 星期幾的簡寫

%a 星期幾的全稱

%b 月份的簡寫

%b 月份的全稱

%c 標準的日期的時間串

%c 年份的後兩位數字

%d 十進位制表示的每月的第幾天

%d 月/天/年

%e 在兩字元域中,十進位制表示的每月的第幾天

%f 年-月-日

%g 年份的後兩位數字,使用基於周的年

%g 年份,使用基於周的年

%h 簡寫的月份名

%h 24小時制的小時

%i 12小時制的小時

%j 十進位制表示的每年的第幾天

%m 十進位制表示的月份

%m 十進位制表示的分鐘數

%n 新行符

%p 本地的am或pm的等價顯示

%r 12小時的時間

%r 顯示小時和分鐘:hh:mm

%s 十進位制的秒數

%t 水平製表符

%t 顯示時分秒:hh:mm:ss

%u 每週的第幾天,星期一為第一天 (值從0到6,星期一為0)

%u 第年的第幾周,把星期日作為第一天(值從0到53)

%v 每年的第幾周,使用基於周的年

%w 十進位制表示的星期幾(值從0到6,星期天為0)

%w 每年的第幾周,把星期一做為第一天(值從0到53)

%x 標準的日期串

%x 標準的時間串

%y 不帶世紀的十進位制年份(值從0到99)

%y 帶世紀部分的十制年份

%z,%z 時區名稱,如果不能得到時區名稱則返回空字元。

%% 百分號

*/

功能:將時間格式化,或者說:格式化乙個時間字串。我們可以使用strftime()函式將時間格式化為我們想要的格式。

使用舉例

time_t t=time(0);

char* str1;

str1=(char*)malloc(30*sizeof(char));

strftime(str1,30,"%y-%m-%d %h:%m:%s",gmtime(&t));//使用gmtime()獲得tm*,str1儲存著經過格式化的字串

c語言時間函式

include 1.獲得日曆時間 實際上是長整型,從乙個時間點 一般是1970年1月1日0時0分0秒 到此時的秒數 time t的值由函式time 獲得 time t time time t timer eg time t t time null struct tm struct tm的值由函式lo...

C語言時間函式

在呼叫系統時間處理時間問題時,需要使用時間函式,使用前需要引入標頭檔案time.h。time t time time t t time函式會返回從公元1970年1月1日的utc時間從0時0分0秒算起到現在所經過的秒數。引數t是乙個指標,如果不是乙個空指標,函式也會將返回值存到t指標所指的記憶體單元中...

c語言 時間詳解

1 計時,clock返回從開始這個程式到呼叫時的時鐘計時單元數,連續做10億次自減運算大約4.3秒 如下 include include void main 2 獲得日曆時間 時間戳 include include int main 3 獲得看起來正常的日期和時間 include include i...