|
어제 장성호님 관심 가지시고 답변 주신거 감사드립니다.
(어제 질문 올린 초보자 입니다.)
UTC Time으로 변환후 송신, 그 값을 다시 Local Time으로 변환하면 정상표시 됩니다.
혹시 다른 분들 참고가 되실지 몰라 그 부분을 올립니다.
BYTE by[4];
SYSTEMTIME stm;
struct tm tmSet;
time_t ttm;
DWORD dwDate;
GetSystemTime(&stm);
tmSet.tm_year = stm.wYear - 1900;
tmSet.tm_mon = stm.wMonth - 1;
tmSet.tm_mday = stm.wDay;
tmSet.tm_wday = stm.wDayOfWeek;
tmSet.tm_hour = stm.wHour;
tmSet.tm_min = stm.wMinute;
tmSet.tm_sec = stm.wSecond;
ttm = mktime ( &tmSet );
dwDate = (DWORD)ttm;
if ( dwDate == 0xFFFFFFFF )
dwDate = 0;
by[0] = HIBYTE(HIWORD(dwDate));
by[1] = LOBYTE(HIWORD(dwDate));
by[2] = HIBYTE(LOWORD(dwDate));
by[3] = LOBYTE(LOWORD(dwDate));
<= 여기 까지가 UTC Time 으로 변환 부분입니다.
by를 송신후 다시 Local Time으로 읽으면
DWORD dw = MAKELONG ( MAKEWORD(by[3], by[2]), MAKEWORD(by[1], by[0]) );
struct tm *systime;
time_t t;
t = dw;
systime = localtime(&t);
int year = systime->tm_year+1900;
int mon = systime->tm_mon+1;
int day = systime->tm_mday;
int wee = systime->tm_wday;
// 2007년 7월 3일 (2 => 화요일) 정상 처리 됩니다.
|