歡迎討論
所謂「時」,可以分成時間點和時間段兩大類,時間點的概念就好比知道現在是幾時幾分,而時間段主要用於計量這段程式執行了多久,或者用於定時觸發中斷。c/c++中有多種方法可以實現計時。
需要包含標頭檔案或者是,time()的函式原型為:
time_t time ( time_t * timer );
其中time_t是64位的整型,用於計算自2023年1月1日以來逝去的秒數,既可以通過返回值來得到秒數,也可以通過傳入引數來獲得秒數,函式的使用方法如下:
1執行結果如下:intmain()
2
可以通過兩次時間點之差來獲得時間段。由time()得到的僅僅是乙個很大的秒數,怎樣才能將之轉換成我們日常生活中能用到的年、月、日、時、分和秒呢?
需要包含標頭檔案或者是,localtime()的函式原型如下:
struct tm * localtime ( const time_t * timer );
返回的是名為tm的結構體,而tm結構體中則儲存了諸如年、月、日之類的有意義的時間點,函式的用法如下:
1首先用time函式得到自元年以來逝去的秒數,接著由localtime(秒數)即可得到儲存有意義時間點的結構體,tm結構體中的tm_year表示自2023年以來逝去的年,所以要輸出現在是多少年,要記得加上1900;tm_mon表示當前月,注意這裡的取值範圍是[0, 11],所以對之+1則得到生活意義上的月;表示當前天的情況稍稍複雜一些,比如今年是2023年1月5日,常用的天是5,即今天是本月的第5天,用tm_mday表示,mday表示month day;也可以說今天是週六,即今天是本週的第6天,用tm_wday表示,wday表示week day;同樣也可以說今天是整個一年中的第5天,即今天是本年的第5天,用tm_yday表示,yday表示year day,注意1月1號的tm_yday是0,所以對之+1以更符合生活上的概念。下面的時、分、秒的概念也就相對容易了,用tm_hour表示時,tm_min表示分,tm_sec表示秒。intmain()
2
上面程式的執行結果如下:
下面我們列個表總結一下:
tm_year 當前年(自2023年以來逝去的年數,一般對之+1900)
tm_mon 當前月(注意起始是0,所以一般對之+1)
tm_mday 當前日
tm_wday 星期幾
tm_yday 年中的第幾天(注意起始是0,所以一般對之+1)
tm_hour 當前時
tm_min 當前分
tm_sec 當前秒
如果你用的是visual studio的編譯器,那麼直接使用localtime()函式,編譯器會給出warning,說這個函式不安全,並推薦使用localtime_s()。localtime_s()的函式介面如下:
errno_t localtime_s(
struct tm* _tm,
const time_t *time
我看了一下微軟的文件,貌似這個函式對原來函式的「安全」改進就在於用返回值判斷函式執行是否成功。所以很簡單地,我們只要把上述程式傳入的引數形式修改一下:
1tm結構體中能表示的最小單位是「秒」,在有些實時應用時,可能需要更精確的度量,該怎麼辦呢?intmain()2;
5int err = localtime_s(¤ttime, &t);6if
(err)
711 cout << "
當前年:
"<< 1900 + currenttime.tm_year <
12<< "
當前月:
"<< currenttime.tm_mon + 1
<
13<< "
當前日:
"<< currenttime.tm_mday <
14<< "
當前時:
"<< currenttime.tm_hour <
15<< "
當前分:
"<< currenttime.tm_min <
16<< "
當前秒:
"<< currenttime.tm_sec <
17 cout << "
今天是星期
"<< currenttime.tm_wday <
18<< "
今天是年中的第
"<< currenttime.tm_yday + 1
<< "天"
<
19 }
windows.h標頭檔案中的getlocaltime()函式可以精確到毫秒,函式介面如下:
void getlocaltime(systemtime* systemtime);
systemtime是類似於tm的結構體,使用方法很簡單,如下面的程式所示,
1執行結果如下:intmain()
2
可以看到,systemtime結構體中的成員都是生活意義上的,不用+1或者+1900來修正,其實看變數名也已經知道它的含義了,但在這裡還是不妨做個表:
wyear 當前年
wmonth 當前月
wday 當前日
whour 當前時
wminute 當前分
wsecond 當前秒
wmilliseconds 當前毫秒
wdayofweek 當前是星期幾
python計時函式 python計時函式
技術文件 一屏 使用者滑動螢幕至主體內容展現結束之前,在頁面任意位置停留時看到的所有內容,稱為一屏。移動端適配 為了使pc頁面能夠在移動端正常展現的手段,保證使用者不需要縮小 放大 左右滑動即可看清全部字型。廣告 指為了某種特定的需要,通過一定形式的 公開且廣泛地向公眾傳遞資訊的宣傳手段 本 中的廣...
opencv 計時函式
opencv進行計時需要用到兩個函式 gettickcount 和 gettickfrequency gettickcount 表示計算機從某一時間開始的計數個數 gettickfrequency 表示單位時間內計算機的計數個數 為了得到執行某一過程所需的時間,可以使用下面的 double t do...
計時函式 opencv c
1.opencv core.hpp gettickcount 和gettickfrequency double time0 static cast cv gettickcount 你需要計算的 部分 time0 static cast cv gettickcount time0 cv gettick...