本文目錄一覽:
用c語言獲取時間
#include stdio.h
#include time.h
int main()
{
time_t rawtime;
struct tm * timeinfo;
time ( rawtime );
timeinfo = localtime ( rawtime );
printf ( “當前系統時間: %s”, asctime (timeinfo) );
return 0;
}
說明:
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
c語言編程,怎麼計算時間
#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()計算兩者的差,即可得到耗費時間。
C語言計算時間
在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”);
}
C語言中有沒有能顯示系統日期和時間的函數?
C語言中讀取系統時間的函數為time(),其函數原型為:
#include time.h
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。可以調用ctime()函數進行時間轉換輸出:
char * ctime(const time_t *timer);
將日曆時間轉換成本地時間,按年月日格式,進行輸出,如:
Wed Sep 23 08:43:03 2015
C語言還提供了將秒數轉換成相應的時間結構的函數:
struct tm * gmtime(const time_t *timer); //將日曆時間轉化為世界標準時間(即格林尼治時間)
struct tm * localtime(const time_t * timer); //將日曆時間轉化為本地時間
將通過time()函數返回的值,轉換成時間結構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()為負。*/
};
編程者可以根據程序功能的情況,靈活的進行日期的讀取與輸出了。
例如:
#includetime.h
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*/
}
原創文章,作者:FAZB,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/148740.html