2009-12-24 93 views
1

我想獲取系統時間,包括秒的小數部分。標準c(ANSI C)可以嗎? 如果沒有,然後告訴我一些窗口操作系統的庫,這樣我纔有可能。在Linux中,我有以下代碼可以正常工作。如何使用time.h獲取UTCTime秒數的小數部分

#include <sys/time.h>                 
#include <time.h>                  
#include <stdlib.h>                 
#include <stdio.h>                 

int main(void)                  
{                      
    char buffer[30];                 
    struct timeval tv;                 

    time_t curtime;                  



    gettimeofday(&tv, NULL);               
    curtime=tv.tv_sec;                 

    strftime(buffer,30,"%m-%d-%Y %T.",localtime(&curtime));       
    printf("%s%ld\n",buffer,tv.tv_usec);            

    return 0;                   


    } 

輸出是

2009年12月25日11:09:18.35443541

請幫幫我,怎麼可能爲窗口操作系統。如果ANSI C不允許我。

回答

1

標準C不提供亞秒級分辨率時序。

POSIX確實提供亞秒級的分辨率時間 - 事實上,它有多種不同的方式,包括您展示的gettimeofday()

1

像這樣:

#include <wtypes.h> 
int main() 
{ 
    SYSTEMTIME t; 
    GetSystemTime(&t); 
    int year = t.wYear; 
    int month = t.wMonth; 
    int day = t.wDay; 
    int hour = t.wHour; 
    int minute = t.wMinute; 
    int second = t.wSecond; 
    int second_fraction = t.wMilliseconds; 
    return 0; 
} 

夫婦約業績點,如果它是對你很重要:

1)gettimeofday()是相當快的,如果在幾個線程使用也不會引起worsenig的性能

2)在localtime()裏面有一個pthread_mutex_lock()(可能是因爲它需要一些系統設置,比如白天)的調用。因此,當您在多線程應用程序中廣泛使用時,可能會出現性能問題

+0

@skwllsp: - 請告訴我參考。或頭文件,我必須包括SYSTEMTIME和GetSystemTime ....! – Siddiqui 2009-12-24 07:42:04

+0

#包括 2009-12-24 07:50:20

+0

謝謝Skwllsp,我試過你的代碼,但它並沒有給我準確的結果。 – Siddiqui 2009-12-24 08:01:33

相關問題