一、標準c和c++都可用
1、獲取時間用time_ttime( time_t * timer ),計算時間差使用double difftime( time_t timer1, time_t timer0 )。 精確到秒。
測試程式如下:
[c-sharp]view plain
copy
print?
#include
#include
int main()
本程式在fedora9測試通過。
關於**中的sleep函式,需要注意的是:
1)在windows下,為sleep函式,且包含windows.h
2)關於sleep中的數,在windows和linux下1000代表的含義並不相同,windows下的表示1000毫秒,也就是1秒鐘;linux下表示1000秒,linux下使用毫秒級別的函式可以使用usleep。
2、clock_tclock(),clock()
獲取的是計算機啟動後的時間間隔,得到的是cpu時間,精確到1/clocks_per_sec秒。
測試程式如下:
[c-sharp]view plain
copy
print?
#include
#include
int main()
二、c++中(此處針對windows環境,標準c中則linux和windows都可以)
1、gettickcount()
呼叫函式需包含windows.h。得到的是系統執行的時間 精確到毫秒,測試程式如下:
[c-sharp]view plain
copy
print?
#include
#include
using namespace std;
int main()
2、getlocaltime()
獲得的是結構體儲存的year,month等資訊。而c語言time函式獲得是從2023年1月1日0時0分0秒到此時的秒數。需要gmtime函式轉換為常用的日曆(返回的是世界時間,要顯示常用的時間,則為localtime函式)。
在c語言中,儲存常用日曆的結構體為struct tm,包含在time.h中,c++語言為systemtime結構體,包含在winbase.h(程式設計包含windows.h即可)。當然,精度肯定為秒了。
測試程式如下:
[c-sharp]view plain
copy
print?
#include
#include
using namespace std;
int main()
c語言的gmtime方法的示範**如下:
[c-sharp]view plain
copy
print?
#include
#include
#include
int main()
另外,c語言有類似於getlocaltime方法的函式ctime()。
對localtime(),原型為:struct tm *localtime(const time_t *timep);將測試程式的gmtime改為localtime,則可以看到輸出的時間為爭取時間和日期了。為了更友好的得到時間和日期,像date那樣輸出,可以用asctime或ctime函式,原型:char *ctime(const time_t *timeval);測試**如下:
[c-sharp]view plain
copy
print?
#include
#include
#include
int main()
3、要獲取高精度時間,可以使用
bool queryperformancefrequency(large_integer *lpfrequency)獲取系統的計數器的頻率
bool queryperformancecounter(large_integer *lpperformancecount)獲取計數器的值
然後用兩次計數器的差除以frequency就得到時間。
測試程式如下:
[c-sharp]view plain
copy
print?
#include
#include
using namespace std;
int main()
需要注意的就是結果需要強制轉換為double,不然會得到如下錯誤:<< is ambiguous。
4、timegettime()。
精度:毫秒,與gettickcount()相當。使用需要包含windows.h,並加入winmm.lib(雖然查到資料說需要包含mmsystem.h,不過經驗證,可以不用包含)。測試**如下:
[c-sharp]view plain
copy
print?
#include
#include //gettickcount
//#include
using namespace std;
int main()
5、mfc中,ctime::getcurrenttime() 精確到秒,不列出測試**。
關於定時器什麼的,目前用到地方不多,就不總結了
參考**:
1、2、
Windows下C C 獲取當前系統時間
原文 寫軟體時經常要用到獲取系統時間顯示到狀態列,這裡在前人的基礎上總結了一下幾種方案。time t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是 typedef long time t time value 可以看出time t其實是...
Windows下C C 獲取當前系統時間
time t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是 typedef long time t time value 可以看出time t其實是乙個長整型,由於長整型能表示的數值有限,因此它能表示的最遲時間是2038年1月18日19...
獲取windows系統時間
獲取系統時間,這個方法比較簡單 sytimeemtime time getlocaltime time 獲得當前本地時間 getsytimeemtime time 這乙個是獲得格林威治時間,一般不用 sytimeemtime結構說明 typedef struct systemtime systemt...