當前位置:首頁 » 編程語言 » difftimeC語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

difftimeC語言

發布時間: 2022-01-31 23:02:38

1. c語言中difftime(end,start)函數可被end-start表達式所取代嗎 我測試了幾組數,貌似是可以的。有知道的

time_t
type
<ctime>
Time type

Type capable of representing times and support arithmetical operations.

This type is returned by the time function and is used as parameter by some other functions of the <ctime> header.

It is almost universally expected to be an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC. This is e to historical reasons, since it corresponds to a unix timestamp, but is widely implemented in C libraries across all platforms.

指正樓上答案

請點擊參考資料進行詳細閱讀
很多問題要從根源上查閱,而不是去聽取別人的答案。
像這種標准函數的問題,查下它的幫助文檔就可以了,文檔才是最權威的。
文檔上寫的清楚,返回值是The difference in seconds (time2-time1) as a floating point double.這個函數的作用也就在於此,保證返回值為兩個時間所差的秒數。
而time_t的類型It is almost universally expected to be an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC. 幾乎但並不確保所有都是以秒為單位,這就是區別所在。用difftime具有更強的可移植性。在不是很特別的系統上,兩值之差是可以取代difftime這個函數的。

2. C語言的比較兩個時間的函數

1、方法一:若時間為結構體變數,比較兩個時間的大小,而且不能改變時間的值,可以是:
int timecmp(date_t* date1,date_t* date2)
{
if(date1-> year==date1-> year)
return memcmp(date1, date2,sizeof(date_t));
else
return date1-> year-date2-> year
}
2、方法二:
long getTimeInterval(const char *t1, const char *t2) {
struct tm tm1, tm2;
time_t start, end;
double diff;
memset(&tm1, 0, sizeof(tm1));
memset(&tm2, 0, sizeof(tm2));
strptime(t1, "%Y%m%d", &tm1);
start = mktime(&tm1);
strptime(t2, "%Y%m%d", &tm2);
end = mktime(&tm2);
diff = difftime(start, end);
return d2l(diff);
}
調用:
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20110326"));
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20990326"));
第一行輸出:[-8208000]
第二行輸出:[1292860801]
3、補充:C語言時間函數:
(1)、獲得日歷時間函數:
可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);

如果已經聲明了參數timer,可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年
1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:
(2)、獲得日期和時間函數:
這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?
其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將
日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼用localtime()函數
在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。

3. 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;

}


運行結果:


望採納!

4. C語言時間間隔

double difftime(
time_t timer1,
time_t timer0
);
double _difftime32(
__time32_t timer1,
__time32_t timer0
);
double _difftime64(
__time64_t timer1,
__time64_t timer0
);

參數

timer1
關閉時。
timer0
啟動時間。
返回值

difftime 返回經過的時間 (以秒為單位),從 timer0 到 timer1。 返回的值是一個雙精度浮點數。 返回值可能為 0,指示錯誤。
備注

difftime 函數計算兩個提供的時間值 timer0 和 timer1之間的差異。

5. c語言如何計時

  1. C語言中提供了許多庫函數來實現計時功能

  2. 下面介紹一些常用的計時函數

    1. time()

    頭文件:time.h

    函數原型:time_t time(time_t * timer)

    功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數

    用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。

    用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。

    說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。

    2. clock()

    頭文件:time.h

    函數原型:clock_t clock(void);

    功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。

    說明:可以精確到毫秒,適合一般場合的使用。

    3. timeGetTime()

    頭文件:Mmsystem.h引用庫: Winmm.lib

    函數原型:DWORD timeGetTime(VOID);

    功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。

    說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。

    4. GetTickCount()

    頭文件:windows.h

    函數原型:DWORD WINAPI GetTickCount(void);

    功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。

    說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。

    5. QueryPerformanceCounter()、QueryPerformanceFrequency()

    頭文件:windows.h

    函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

    BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

    功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。

    補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:

    在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。

    說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。

    6. gettimeofday()

    Linux C函數。

    頭文件:sys/time.h

    函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

    說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。

    timeval的定義為:

    structtimeval{

    longtv_sec;//秒數

    longtv_usec;//微秒數

    }

    可見該函數可用於在linux中獲得微秒精度的時間。

    說明:使用這種方式計時,精度可達微秒。經驗證,在arm+linux的環境下此函數仍可使用。

6. c語言計算時間差

#include <time.h>
time_t start_time, end_time;
double elapsed_time;

time( &start_time );

... ...

time( &end_time );
elapsed_time = difftime(start_time, end_time);

7. 想要c語言時間函數:clock得到處理器時間 difftime得到時間差 mktime 設置時間 time得到時間的描述和例子

time_t其實就是一個long類型,可以查看time.h頭文件,指從1900年1月1日開始到現在的秒數

8. c語言如何計算兩個時間相差多少

任意輸入兩個24小時制的時間,輸出兩個時間的時間差;

9. c語言difftime返回0

difftime類型是double,所以輸出格式應該用%f,而不是%d

10. C語言 計時函數時間差總為零

C語言中變數是有作用域的,除非定義了全局變數,一般而言不同的函數體中的變數相互不可見。

因此,主函數中的t_start與leave_car()函數中的t_start並不是同一個變數!

修改如下:

  1. 將主函數中的

    time_t t_start,t_end;
    t_start=time(NULL);
    兩個語句去掉,因為對整個程序而言沒有實際的作用。

  2. 在leave_car()中

    printf("yes");

    前添加

    t_start=time(NULL);

  3. 另外

    printf("time is %f s ",difftime(t_end,t_start);
    少寫了一個反括弧