C語言時間的差
A. c語言中用difftime計算兩個時間差問題,求解!
你好。
問題分析:
time_t 只能表示從1970年1月1日0時0分0秒 到此時的秒數,1970年1月1日0時0分0秒 以前的時間它是無法表示的。而struct tm 的成員變數tm_year 的值為實際年份減去 1900,你的程序中給timeptr1.tm_year 和timeptr2.tm_year 都賦值為 0,就相當於這兩個時間都是 1900 年,1900 年在 1970年1月1日0時0分0秒 以前,所以用 mktime 函數計算的結果 time_t 是無法表示的,t1 和 t2 的結果就都是 0,最終 difftime(0,0) 結果當然也是 0。
解決方案:
給struct tm 的成員變數tm_year 一個大於 70 的值如 71,即 1971年,總之保證這個時間在 1970年1月1日0時0分0秒 之後即可。
程序清單:
#include "stdio.h"
#include "time.h"
int main()
{
time_t t1,t2;
struct tm timeptr1,timeptr2;
timeptr1.tm_mday=1;
timeptr1.tm_mon=1;
timeptr1.tm_year=1971-1900;
timeptr1.tm_sec=timeptr1.tm_min=timeptr1.tm_hour=
timeptr1.tm_wday=timeptr1.tm_yday=timeptr1.tm_isdst=0;
timeptr2.tm_mday=2;
timeptr2.tm_mon=1;
timeptr2.tm_sec=5;
timeptr2.tm_year=1971-1900;
timeptr2.tm_min=timeptr2.tm_hour=timeptr2.tm_wday=
timeptr2.tm_yday=timeptr2.tm_isdst=0;
t1=mktime(&timeptr1);
t2=mktime(&timeptr2);
printf("時間差: >> %lf ",difftime(t2,t1));
system("pause");
return 0;
}
運行結果:
望採納!
B. 一道C語言編程題求助:計算時間差V1.0
#include<stdio.h>
intmain()
{
inth1,s1,h2,s2,h3,s3;;
printf("Inputtimeone(hour,second):");
scanf("%d,%d",&h1,&s1);
printf("Inputtimetwo(hour,second):");
scanf("%d,%d",&h2,&s2);
h3=h1-h2;
s3=s1-s2;
if(s3<0&&h3==0)s3=-s3;
elseif(h3<0)h3=-h3,s3=-s3;
if(s3<0)h3-=1,s3+=60;
printf("%dhour%dsecond ",h3,s3);
}
C. 在c語言中,如何計算時間差值
C語言中有兩個相關的函數用來計算時間差,分別是:
time_t time( time_t *t) 與 clock_t clock(void)
計算的時間單位分別為: 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()計算兩者的差,即可得到耗費時間。
D. C語言裡面的時間函數怎麼用
函數名: difftime
功 能: 計算兩個時刻之間的時間差
用 法: double difftime(time_t time2, time_t time1);
程序例:
include <time.h>
E. 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 分鍾
", diff / 60 );
}
(5)C語言時間的差擴展閱讀:
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() ",difftime(c_end,c_start));
printf("The pause used %f s by time() ",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要計算某一函數塊的佔用時間時,只需要在執行該函數塊之前和執行完該函數塊之後調用同一個時間計算函數。再調用函數difftime()計算兩者的差,即可得到耗費時間。