SW 개발

[win32API] 시간의 변환,계산 관련 예제

. . . 2009. 8. 4. 01:18
반응형
  • 기타사항 : EVC4.0 / CE5.0 에서 테스트완료

1. 시간의 변환

일단, 시간의 표현중에 가장 쉽게 표현되는형태인 SYSTEMTIME 형태로 값을 얻어온 후 다시 Double 형태값으로 변환한것을 빼기해서 다시 SYSTEMTIME 형태로 변환하면 경과시간을 알수있을듯...

SYSTEMTIME st;
WCHAR szCurTime[128]={0,};
DWORD dwWriten;

GetLocalTime(&st);
DEBUGMSG(1,(TEXT("orignal!! : st.wMinute[%d] st.wSecond[%d]\r\n"),st.wMinute,st.wSecond));

double dbTime;
SystemTimeToVariantTime(&st,&dbTime);
DEBUGMSG(1,(TEXT("convert to double Val is [%d]\r\n"),dbTime));

VariantTimeToSystemTime(dbTime, &st);

RETAILMSG(1,(TEXT("convert to Time is : st.wMinute[%d] st.wSecond[%d]\r\n"),st.wMinute,st.wSecond));

  • SystemTimeToVariantTime() 함수를 이용하면.. 시간을 double 변수형태로 변환해준다. 반대로..
  • VariantTimeToSystemTime() 함수를 이용하면... double 값을 시간형태로 변환해준다.

2. 시간의 계산

  • 방법1) 위의 함수를 이용하여 double 형태로 변환후 덧셈 뺄셈을 하면 시간 계산이 되더라!! ㅎㅎ;;
  • 방법2) Tick 수로 계산하는 방법이다.
GetTickCount();
(dwCurTick - dwPastTic)/1000

위와 같이 이용하는것이다. 하나는 static 을 이용하여 계속 저장시키고.. 나중에 현재 틱수를 빼서 계산한다. 이때 밀리단위니 1000을 나누면 초가 떨어진다!

반응형