標準庫的time.h里有時間函數
創新互聯專注于肇州企業網站建設,自適應網站建設,商城開發。肇州網站建設公司,為肇州等地區提供建站服務。全流程按需網站建設,專業設計,全程項目跟蹤,創新互聯專業和態度為您提供的服務
time_t time (time_t *timer)
計算從1970年1月1日到當前系統時間,并把結果返回給timer變量,
函數本身返回的也是這個結果.time_t這個類型其實就是一個int.
另有:
double difftime ( time_t timer2, time_t timer1 )
把返回time2和time1所儲存的時間的差.
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
unsigned char time1[] = {?10, 8, 31, 9, 26 };
unsigned char time2[] = { 10, 8, 31, 9, 50 };
struct tm t1 = {0};
struct tm t2 = {0};
time_t _t1;
time_t _t2;
double diff;
t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];
t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];
_t1 = _mkgmtime( t1 );
_t2 = _mkgmtime( t2 );
diff = difftime(_t2, _t1 );
printf( "相差 %.0f 分鐘\n", diff / 60 );
}
擴展資料:
C語言中有兩個相關的函數用來計算時間差,分別是:
time_t time( time_t *t)? ?與 clock_t clock(void)
頭文件: time.h
計算的時間單位分別為: s? ?, ms
time_t 和 clock_t 是函數庫time.h 中定義的用來保存時間的數據結構
返回值:
1、time? : 返回從公元1970年1月1號的UTC時間從0時0分0秒算起到現在所經過的秒數。如果參數 t 非空指針的話,返回的時間會保存在 t 所指向的內存。
2、clock:返回從“開啟這個程序進程”到“程序中調用clock()函數”時之間的CPU時鐘計時單元(clock tick)數。? ? ?1單元 = 1 ms。
所以我們可以根據具體情況需求,判斷采用哪一個函數。
具體用法如下例子:
#include time.h
#include stdio.h
#include stdlib.h
int main()
{
time_t c_start, t_start, c_end, t_end;
c_start = clock();? ? //! 單位為ms
t_start = time(NULL);? //! 單位為s
system("pause");
c_end? ?= clock();
t_end = time(NULL);
//!difftime(time_t, time_t)返回兩個time_t變量間的時間間隔,即時間差
printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));
printf("The pause used %f s by time()\n",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要計算某一函數塊的占用時間時,只需要在執行該函數塊之前和執行完該函數塊之后調用同一個時間計算函數。再調用函數difftime()計算兩者的差,即可得到耗費時間。
方法一,#includetime.h
int main()
{
time_t timep;
struct tm *p;
time (timep);
p=gmtime(timep);
printf("%d\n",p-tm_sec); /*獲取當前秒*/
printf("%d\n",p-tm_min); /*獲取當前分*/
printf("%d\n",8+p-tm_hour);/*獲取當前時,這里獲取西方的時間,剛好相差八個小時*/
printf("%d\n",p-tm_mday);/*獲取當前月份日數,范圍是1-31*/
printf("%d\n",1+p-tm_mon);/*獲取當前月份,范圍是0-11,所以要加1*/
printf("%d\n",1900+p-tm_year);/*獲取當前年份,從1900開始,所以要加1900*/
printf("%d\n",p-tm_yday); /*從今年1月1日算起至今的天數,范圍為0-365*/
}
方法二.#include?stdio.h
#include?time.h
int?main?()
{
time_t?t
struct?tm?*?lt;????time?(t);//獲取Unix時間戳。
lt?=?localtime?(t);//轉為時間結構。
printf?(?"%d/%d/%d?%d:%d:%d\n",lt-tm_year+1900,?lt-tm_mon,?lt-tm_mday,
lt-tm_hour,?lt-tm_min,?lt-tm_sec);//輸出結果
return?0;}
擴展資料
1、CTimeSpan類
如果想計算兩段時間的差值,可以使用CTimeSpan類,具體使用方法如下:
CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
CTimeSpan span=t-t1; //計算當前系統時間與時間t1的間隔
int iDay=span.GetDays(); //獲取這段時間間隔共有多少天
int iHour=span.GetTotalHours(); //獲取總共有多少小時
int iMin=span.GetTotalMinutes();//獲取總共有多少分鐘
int iSec=span.GetTotalSeconds();//獲取總共有多少秒
2、timeb()函數
_timeb定義在SYS\TIMEB.H,有四個fields
dstflag
millitm
time
timezone
void _ftime( struct _timeb *timeptr );
struct _timeb timebuffer;
_ftime( timebuffer );
參考資料來源:百度百科:time函數
time_t nowtime; -- 聲明變量 nowtime(現在時間) 為 time_t 型
struct tm *timeinfo; -- 聲明變量timeinfo(時間信息)為 tm 型 結構 指針。
time_t , tm 都是 time.h 頭文件里定義 的 類型。
time( nowtime ); -- 調系統函數 time(), 獲得 現在時間 (1970年起多少個“滴答”,世界標準時間)
timeinfo = localtime( nowtime ); -- 調系統函數, 獲得 當地 現在時間 (例如 東8 區,北京時間)。時間數據是 tm 型 結構。
int hour; -- 聲明變量 hour (小時),整型。
hour = timeinfo-tm_hour+1 ; -- 結構 timeinfo的成員tm_hour 是時間值,+1 得 hour(小時)。
tm_hour -- 數值范圍 0-23。
#include stdio.h
#include time.h
int main()
{
time_t timep; //時間變量,從1970年1月1日0時起的秒數
struct tm * p; //時間結構,含年月日時分秒星期幾,一年中第幾天,夏時制等成員。年從1900起算,月從0起算,...
time(timep); // 獲取當前時間,從1970年1月1日0時起的秒數
p = gmtime(timep); // 獲取UTC時間 結構成員數值們
printf("%d %d %d\n",1900+p-tm_year, 1+p-tm_mon, p-tm_mday); //輸出UTC時間的年月日
p = localtime(timep); // 獲取本地 時間 結構成員數值們
printf("%d %d %d\n",1900+p-tm_year, 1+p-tm_mon, p-tm_mday); //輸出本地時間年月日
return 0;
}
在C語言中計算時間,可以使用標準庫中的計時函數——clock()。
函數原型:
clock_t?clock(?void?);
其中clock_t是用來保存時間的數據類型,在time.h文件中,可以找到對它的定義:
#ifndef?_CLOCK_T_DEFINED
typedef?long?clock_t;
#define?_CLOCK_T_DEFINED
#endif
很明顯,clock_t是一個長整形數。在time.h文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鐘會有多少個時鐘計時單元,其定義如下:
#define?CLOCKS_PER_SEC?((clock_t)1000)
可以看到每過千分之一秒(1毫秒),調用clock()函數返回的值就加1。下面舉個例子,可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:
void?elapsed_time()
{
printf("Elapsed?time:%u?secs.\n",clock()/CLOCKS_PER_SEC);
}
當然,也可以用clock函數來計算的機器運行一個循環或者處理其它事件到底花了多少時間:
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main(?void?)
{
long????i?=?10000000L;
clock_t?start,?finish;
double??duration;
printf(?"Time?to?do?%ld?empty?loops?is?",?i?);
start?=?clock();
while(?i--?)??????;
finish?=?clock();
duration?=?(double)(finish?-?start)?/?CLOCKS_PER_SEC;
printf(?"%f?seconds\n",?duration?);
system("pause");
}