測量時間差
回答
查找gettimeofday對POSIX系統和timeGetTime爲Windows。
編輯:似乎OP是要求代碼比較當前時間/日期與另一個時間/日期。下面的代碼演示如何獲取當前日期和時間在Windows上:
#include <Windows.h> #include <stdio.h> void main() { SYSTEMTIME st; GetSystemTime(&st); printf("Year:%d\nMonth:%d\nDate:%d\nHour:%d\nMin:%d\nSecond:%d\n" ,st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond); }
這裏是如何計算兩個SYSTEMTIME對象之間的差異:
#include <windows.h> #include <iostream> // Return time difference in units of 100 us. _int64 Delta(const SYSTEMTIME st1, const SYSTEMTIME st2) { union timeunion { FILETIME fileTime; ULARGE_INTEGER ul; } ; timeunion ft1; timeunion ft2; SystemTimeToFileTime(&st1, &ft1.fileTime); SystemTimeToFileTime(&st2, &ft2.fileTime); return ft2.ul.QuadPart - ft1.ul.QuadPart; } int main() { SYSTEMTIME t1 = {0}, t2 = {0}; t1.wDay = 10; t1.wMonth = 4; t1.wYear = 2009; t2.wDay = 12; t2.wMonth = 4; t2.wYear = 2009; _int64 i = Delta(t1, t2); std::cout << "times are " << i/10000000 << " seconds apart\n"; return 0; }
這兩個樣品應該給你工具來做你需要的。
謝謝胡里奧,正是我正在尋找! – Tom 2010-12-15 02:19:29
@Julio恕我直言。這是解決我從許多解決方案中看到的這個問題的最乾淨和最簡單的實現。 – TinyRacoon 2016-07-22 10:56:51
如果你是一個POSIX系統上,你可以使用gettimeofday(3)
:
struct timeval start, end;
gettimeofday(&start, NULL);
...
gettimeofday(&end, NULL);
// Watch out for overflow!
int delta_milliseconds = 1000 * (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec)/1000;
如果您使用的是Windows,你可以使用GetTickCount
:
DWORD start, end;
start = GetTickCount();
...
end = GetTickCount();
int delta_milliseconds = end - start;
但卻認識到,只有GetTickCount
具有約10-16毫秒的分辨率。如果您需要更精確,使用QueryPerformanceCounter
和QueryPerformanceFrequency
代替:
// Error-checking omitted for expository purposes
LARGE_INTEGER freq, start, end;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
...
QueryPerformanceCounter(&end);
double delta_milliseconds = (double)(end.QuadPart - start.QuadPart)/freq.QuadPart * 1000.0;
嘿,感謝亞當,但這是計算通話間隔的時間。我需要的是計算當前系統時間,比如12:30,並測量12:30和預定義時間(比如16:00)之間的毫秒數 – Tom 2010-12-15 00:11:27
- 1. 測量聯網設備之間的時間差異
- 2. 由時鐘和steady_clock測量的時間差
- 3. System.currentTimeMillis測量時間
- 4. 使用到達時間差的信號的三角測量
- 5. 測量等待時間
- 6. 測量查詢的時間
- 7. C - 測量計算時間
- 8. 時間測量精度
- 9. 絕對時間測量
- 10. 測量時間爲輸入
- 11. FPGA測量精確時間
- 12. 測量渲染時間
- 13. 測量執行時間短
- 14. 測量網絡時間
- 15. pgsql時間差?
- 16. Mysql時間差
- 17. SQL時間差
- 18. 微軟測試框架測量時間
- 19. 測量長的時間間隔
- 20. 測量時間間隔因爲現在
- 21. 預測誤差爲變量
- 22. 時間測量 - 多次進行測量,變量在iterval
- 23. 如何測量登錄時的時間
- 24. 在testng中處理依賴和測試之間的時間差
- 25. 24小時時間表 - 時間差
- 26. Rails 4 - 時間差
- 27. 計算時間差
- 28. 火花時間差
- 29. 比較時間差
- 30. PHP時間差錯
操作系統? – John 2010-12-15 00:04:17
win nt及以上 – Tom 2010-12-15 00:05:31