권세건 님이 쓰신 글 :
: 제가 time1 = time_t(&t)로 시간을 구했습니다.. 어떠한 값이 변수 time1에 치환되더군요
time_t(&t) 가 아니라 time(&t) 였겠죠.
time 함수는 1초 단위입니다. time 이라고 치고 F1 도움말을 보면 나오죠.
time gives the current time, in seconds, elapsed since 00:00:00 GMT, January 1, 1970, and stores that value in the location pointed to by timer, provided that timer is not a NULL pointer.
Return Value
time returns the elapsed time in seconds.
즉.
time1 = time(NULL); 하든 time(&time1); 하든지 하면 1초단위의 시간값이 나온단 이야기죠.
볼랜드에서 재공하는 Now() 함수를 쓰셔도 됩니다. double 형으로 리턴되는데
소숫점 위가 날짜, 소숫점 아래가 시간(초단위) 인고로
하루가 60초 * 60분 * 24시간 = 86400 초 이니 당연하게도 Now() 로 나온 값에 86400 을 곱하면
초단위의 자연수가 되죠. time1 = (int)(Now() * 86400); 라는 표현이 위와 같다는 말씀이죠.
허나, 원하시는 작업이 정확히 1초 경과 후 어떤 작업을 수행하는거라면
1초 단위 정확도의 함수로는 어림도 없을테고... ftime 함수를 쓰시면
구조체의 millitm 멤버에 1/1000초가, time 멤버에 1초 단위의 시간이 나옵니다.
struct timeb tb;
ftime(&tb); 하셨다면 1/1000 초 (밀리세컨드)는....
long millisec = tb.time * 1000 + tb.millitm; 으로 얻어진다는 이야기.
그러나~... ftime 함수의 해상도는 1/1000 초가 아니라 실은 1/18.2 초입니다.
메인보드의 리얼타임 클럭칩의 주파수가 그러하거든요.
고로, 보다 정확히 1/1000 초 단위의 정확도를 얻고 싶으시면 RDTSC를 쓰시지요...
|