我需要獲得毫秒精度,我看看this question,但我在Windows上工作:它爲POSIX函數提供鏈接錯誤。在Windows平臺上使用ansi-c我可以獲得系統時間高達毫秒的準確性嗎?
這將是非常好的,如果我能得到自1970年以來的UTC時間以毫秒精度。
我需要獲得毫秒精度,我看看this question,但我在Windows上工作:它爲POSIX函數提供鏈接錯誤。在Windows平臺上使用ansi-c我可以獲得系統時間高達毫秒的準確性嗎?
這將是非常好的,如果我能得到自1970年以來的UTC時間以毫秒精度。
不在ANSI C,但Windows API提供了GetSystemTime
功能說明這裏:http://msdn.microsoft.com/en-us/library/ms724950(v=VS.85).aspx
在Windows API的有一個SYSTEMTIME結構和一些SYS調用獲得SYSTEMTIME和你的機器的本地時間,可以實現它以這種方式:
SYSTEMTIME systime;
GetSystemTime(& systime);
unsigned int millisec = systime.wMilliseconds;
對不起,但你不能這樣做既不使用ANSI C也不使用Windows API。
您可以得到系統時間與API使用GetSystemTime毫秒分辨率或使用GetSystemTimeAsFileTime 100納秒分辨率,但準確性不會那麼好。系統時間僅在每個時鐘間隔更新,這取決於底層架構(SMP,Uniprocessor,...),大約在10-15毫秒左右。
有多種方法可以使用不同複雜度的算法來推斷系統時間,但是如果沒有操作系統的支持,您將無法保證正確的高分辨率時鐘時間。
這是一個非常好的問題。您應該限制答案,只使用ANSI-C或Windows API在unix時期提供至少毫秒的分辨率。 – 2010-06-29 06:24:23