반응형
폴더내 파일을 읽어와 현재 시간으로 부터 이틀이 지났는지 확인해야 하는 일이 생겼다.
WIN32_FIND_DATA 구조체에서 ftCreationTime 을 확인하면 알수 있다.
아래는 자료를 찾다가 누가 해놓은게 있어서 퍼왔다..
출처: http://cafe.naver.com/kcodeguru.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=993&
BOOL AfterTime(void)
{
SYSTEMTIME stm, convTime;
FILETIME ftm;
LARGE_INTEGER largeInt;
__int64 IN_WEEK = (__int64)10000000*60*60*24*7;
__int64 IN_DAY = (__int64)10000000*60*60*24;
__int64 IN_HOUR = (__int64)10000000*60*60;
__int64 IN_MIN = (__int64)10000000*60;
__int64 IN_SEC = (__int64)10000000;
GetLocalTime(&stm); /* 현재 시간 구하기 */
SystemTimeToFileTime(&stm, &ftm); /* SYSTEMTIME -> FILETIEM 변환 */
memcpy(&largeInt, &ftm, sizeof(FILETIME)); /* FILETIME -> LARGE_INTEGER 변환 */
largeInt.QuadPart += IN_MIN * 30; /* 30분 더하기 */
memcpy(&ftm, &largeInt, sizeof(FILETIME)); /* LARGE_INTEGER -> FILETIME 변환 */
FileTimeToSystemTime(&ftm, &convTime); /* FILETIME -> SYSTEMTIME 변환 */
RETAILMSG(TRUE,(TEXT("### Current Time - %02d:%02d:%02d:%02d\r\n"),
stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds));
RETAILMSG(TRUE,(TEXT("--> Convert Time - %02d:%02d:%02d:%02d\r\n"),
convTime.wHour, convTime.wMinute, convTime.wSecond, convTime.wMilliseconds));
return TRUE;
}
아래건 내가 위에걸 보고 참고해서 이틀 지났는지를 판단하는 소스이다.
WIN32_FIND_DATA 구조체에서 ftCreationTime 을 확인하면 알수 있다.
typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; } WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
아래는 자료를 찾다가 누가 해놓은게 있어서 퍼왔다..
출처: http://cafe.naver.com/kcodeguru.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=993&
BOOL AfterTime(void)
{
SYSTEMTIME stm, convTime;
FILETIME ftm;
LARGE_INTEGER largeInt;
__int64 IN_WEEK = (__int64)10000000*60*60*24*7;
__int64 IN_DAY = (__int64)10000000*60*60*24;
__int64 IN_HOUR = (__int64)10000000*60*60;
__int64 IN_MIN = (__int64)10000000*60;
__int64 IN_SEC = (__int64)10000000;
GetLocalTime(&stm); /* 현재 시간 구하기 */
SystemTimeToFileTime(&stm, &ftm); /* SYSTEMTIME -> FILETIEM 변환 */
memcpy(&largeInt, &ftm, sizeof(FILETIME)); /* FILETIME -> LARGE_INTEGER 변환 */
largeInt.QuadPart += IN_MIN * 30; /* 30분 더하기 */
memcpy(&ftm, &largeInt, sizeof(FILETIME)); /* LARGE_INTEGER -> FILETIME 변환 */
FileTimeToSystemTime(&ftm, &convTime); /* FILETIME -> SYSTEMTIME 변환 */
RETAILMSG(TRUE,(TEXT("### Current Time - %02d:%02d:%02d:%02d\r\n"),
stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds));
RETAILMSG(TRUE,(TEXT("--> Convert Time - %02d:%02d:%02d:%02d\r\n"),
convTime.wHour, convTime.wMinute, convTime.wSecond, convTime.wMilliseconds));
return TRUE;
}
아래건 내가 위에걸 보고 참고해서 이틀 지났는지를 판단하는 소스이다.
BOOL SystemOptimization::Time_2DayCheck(FILETIME ftm)
{
SYSTEMTIME stm;
FILETIME current_time, File_time;
LARGE_INTEGER currentTime;
File_time = ftm;
GetLocalTime(&stm); //! 현재 시간 구하기
SystemTimeToFileTime(&stm, ¤t_time); //! SYSTEMTIME -> FILETIEM 변환
memcpy(¤tTime, ¤t_time, sizeof(FILETIME)); //! FILETIME -> LARGE_INTEGER 변환
currentTime.QuadPart -= IN_DAY * 2; //! 현재 시간에서 2일전 시간
memcpy(¤t_time, ¤tTime, sizeof(FILETIME)); //! LARGE_INTEGER -> FILETIME 변환
if(CompareFileTime(¤t_time, &File_time) == 1) //! 현재시간에서 이틀을 뺀 이 더 클때(파일이 2틀전에 생성시에)
{
return TRUE;
}
return FALSE;
}
반응형
'Study > MFC' 카테고리의 다른 글
리스트 컨트롤에서 해당열을 클릭시 이벤트 처리 (0) | 2011.09.28 |
---|---|
CString 문자열 조작 메소드~~~ 오홍오홍~~ (0) | 2011.09.28 |
파일 정보 얻기!!!!!!~~~~ (0) | 2011.09.28 |
휴지통관련 API ~~ 굿이에요 굿굿!! (0) | 2011.09.28 |
CWinthread의 메모리릭.... (0) | 2011.09.06 |
댓글