❶ c語言 時間函數
CLOCK()函數:
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:
clock_t
clock(void)
;
這個函數返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock
tick)數,在MSDN中稱之為掛鍾時間(wal-clock);若掛鍾時間不可取,則返回-1。其中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
ration;
/*
測量一個事件持續的時間*/
printf(
"Time
to
do
%ld
empty
loops
is
",
i)
;
start
=
clock();
while(
i--
);
finish
=
clock();
ration
=
(double)(finish
-
start)
/
CLOCKS_PER_SEC;
printf(
"%f
seconds\n",
ration
);
system("pause");
}
在筆者的機器上,運行結果如下:
Time
to
do
10000000
empty
loops
is
0.03000
seconds
上面我們看到時鍾計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標准C/C++中,最小的計時單位是一毫秒。
time_t
time(
time_t
*timer
);
返回值是1970年到現在的秒數
用long型接就可以了
參數也是同樣意義
如
long
time_s
=
0;
time_s
=
time(
NULL
);
//
time_s就是1970年到現在的秒數
或者
long
*
time_s
=
NULL;
time(time_s);
//
*time_s就是1970年到現在的秒數
要計算前後一段時間的話之前取一次time,之後取一次相減就知道用了多少秒了
❷ C語言中有沒有一種計時函數,能算出從程序中某段代碼運行所花的時間
C語言中有計時函數算時間,difftime,具體可以看一下<time.h>,這是標准C語言的頭文件。
但注意這幾件事,
1. 如果你是用單片機的嵌入式系統,time.h 中 涉及的幾個函數很可能系統並沒有實現,換句話說,嵌入式系統的時間處理可能不好用!因為嵌入式的系統一般來說不是標准系統。
2. 要統計演算法的運行時間效率,單純用計時的方法是很片面的。比如在windows下寫兩個程序,一個運行1秒,另一個運行2秒,並不能證明演算法1的效率一定高於演算法2。因為windows是典型的多任務系統,演算法1可能花費了系統100%的資源處理了1秒,而演算法2可能只花費了10%的資源處理了2秒。所以,計時的結果可以供參考,但不全面。通常評價演算法的效率,還是要從演算法本身來分析的。
❸ C語言時間函數,求解析意思
#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語言時間函數!!
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。
❺ C語言時間函數time_t
1、time_t // 時間類型(time.h 定義)
struct tm { // 時間結構,time.h 定義如下:
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 ( &rawtime ); // 獲取時間,以秒計,從1970年1月一日起算,存於rawtime
localtime ( &rawtime ); //轉為當地時間,tm 時間結構
asctime() // 轉為標准ASCII時間格式:
//就是直接列印tm,tm_year 從1900年計算,所以要加1900,月tm_mon,從0計算,所以要加1
2、time函數使用示例
#include<stdio.h>
#include<time.h>
intmain()
{
time_trawtime;
structtm*timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
printf("Thecurrentdate/timeis:%s",asctime(timeinfo));
return0;
}
❻ C語言的時間函數
程序似乎有問題,無效數據 輸入什麼都是無效的
❼ C語言計算時間函數
標准庫的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所儲存的時間的差.
❽ 用c語言如何獲取系統當前時間的函數
1、C語言中讀取系統時間的函數為time(),其函數原型為:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。
2、C語言還提供了將秒數轉換成相應的時間格式的函數:
char * ctime(const time_t *timer); //將日歷時間轉換成本地時間,返回轉換後的字元串指針 可定義字元串或是字元指針來接收返回值
struct tm * gmtime(const time_t *timer); //將日歷時間轉化為世界標准時間(即格林尼治時間),返回結構體指針 可定義struct tm *變數來接收結果
struct tm * localtime(const time_t * timer); //將日歷時間轉化為本地時間,返回結構體指針 可定義struct tm *變數來接收結果
3、常式:
#include <time.h>
void main()
{
time_t t;
struct tm *pt ;
char *pc ;
time(&t);
pc=ctime(&t) ; printf("ctime:%s", pc );
pt=localtime(&t) ; printf("year=%d", pt->tm_year+1900 );
}
時間結構體struct tm 說明:
struct tm {
int tm_sec; /* 秒 – 取值區間為[0,59] */
int tm_min; /* 分 - 取值區間為[0,59] */
int tm_hour; /* 時 - 取值區間為[0,23] */
int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */
int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
❾ C語言函數的時間日期函數
函數庫為time.h、dos.h
在時間日期函數里,主要用到的結構有以下幾個:
總時間日期貯存結構tm
┌──────────────────────┐
│struct tm │
│{ │
│ int tm_sec; /*秒,0-59*/ │
│ int tm_min; /*分,0-59*/ │
│ int tm_hour; /*時,0-23*/ │
│ int tm_mday; /*天數,1-31*/ │
│ int tm_mon; /*月數,0-11*/ │
│ int tm_year; /*自1900的年數*/ │
│ int tm_wday; /*自星期日的天數0-6*/ │
│ int tm_yday; /*自1月1日起的天數,0-365*/ │
│ int tm_isdst; /*是否採用夏時制,採用為正數*/│
│} │
└──────────────────────┘
日期貯存結構date
┌───────────────┐
│struct date │
│{ │
│ int da_year; /*自1900的年數*/│
│ char da_day; /*天數*/ │
│ char da_mon; /*月數 1=Jan*/ │
│} │
└───────────────┘
時間貯存結構time
┌────────────────┐
│struct time │
│{ │
│ unsigned char ti_min; /*分鍾*/│
│ unsigned char ti_hour; /*小時*/│
│ unsigned char ti_hund; │
│ unsigned char ti_sec; /*秒*/ │
│ │
└────────────────┘char *ctime(long *clock)
本函數把clock所指的時間(如由函數time返回的時間)轉換成下列格式的
字元串:Mon Nov 21 11:31:54 1983
char *asctime(struct tm *tm)
本函數把指定的tm結構類的時間轉換成下列格式的字元串:
Mon Nov 21 11:31:54 1983
double difftime(time_t time2,time_t time1)
計算結構time2和time1之間的時間差距(以秒為單位)
struct tm *gmtime(long *clock)本函數把clock所指的時間(如由函數time返回的時間)
轉換成格林威治時間,並以tm結構形式返回
struct tm *localtime(long *clock)本函數把clock所指的時間(如函數time返回的時間)
轉換成當地標准時間,並以tm結構形式返回
void tzset()本函數提供了對UNIX操作系統的兼容性
long dostounix(struct date *dateptr,struct time *timeptr)
本函數將dateptr所指的日期,timeptr所指的時間轉換成UNIX格式,並返回
自格林威治時間1970年1月1日凌晨起到現在的秒數
void unixtodos(long utime,struct date *dateptr,struct time *timeptr)
本函數將自格林威治時間1970年1月1日凌晨起到現在的秒數utime轉換成
DOS格式並保存於用戶所指的結構dateptr和timeptr中
void getdate(struct date *dateblk)本函數將計算機內的日期寫入結構dateblk
中以供用戶使用
void setdate(struct date *dateblk)本函數將計算機內的日期改成
由結構dateblk所指定的日期
void gettime(struct time *timep)本函數將計算機內的時間寫入結構timep中,
以供用戶使用
void settime(struct time *timep)本函數將計算機內的時間改為
由結構timep所指的時間
long time(long *tloc)本函數給出自格林威治時間1970年1月1日凌晨至現在所經
過的秒數,並將該值存於tloc所指的單元中.
int stime(long *tp)本函數將tp所指的時間(例如由time所返回的時間)
寫入計算機中.