2009-12-24 2 views
1

초의 분수 부분을 포함하여 시스템 시간을 가져 오려고합니다. 표준 c (ANSI C)에서 가능합니까? 그렇다면 윈도우 OS 용 라이브러리를 만들어서 가능하게 만드십시오. 리눅스에서는 다음 코드가 잘 작동합니다. 친절 윈도우 OS 것이 가능하다 어떻게 도와 18.35443541time.h를 사용하여 UTCTime에서 초의 분수 부분을 얻는 방법

: 09 :

#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)이다. 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) 내부에는 pthread_mutex_lock() (아마도 낮과 같은 시스템 설정이 필요하기 때문)이 필요합니다. 따라서 다중 스레드 응용 프로그램에서 광범위하게 사용하면 성능 문제가 발생할 수 있습니다.

+0

@skwllsp : - 친절하게 말해. 또는 내가 SYSTEMTIME 및 GetSystemTime에 포함해야하는 헤더 파일 ....! – Siddiqui

+0

#include

+0

Skwllsp에게 감사드립니다. 귀하의 코드를 시도했지만 정확하지 않습니다. – Siddiqui

관련 문제