#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...