요약
자세한 내용
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
#define _SECOND ((int64) 10000000)
#define _MINUTE (60 * _SECOND)
#define _HOUR (60 * _MINUTE)
#define _DAY (24 * _HOUR)
Arithmetics 파일 시간을 사용 하 여 수행합니다.
필요 파일 시간이 간단한 산술 연산을 수행 하는 경우가 많습니다. 예를 들어, 파일을 이전 30 일 때 알아야 할 수도 있습니다. 파일 시간에 산술을 수행하려면, FILETIME을 쿼드 워드(64 비트 정수)로 변경하여 산술 연산을 수행한 다음, 해당 결과를 다시 FILETIME로 변환해야 합니다.다음 샘플 코드 ft 파일의 작성 시간을 포함 하는 FILETIME 구조를 가정 하 고 30 일 시간이 추가 됩니다.
ULONGLONG qwResult;
// Copy the time into a quadword.
qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
// Add 30 days.
qwResult += 30 * _DAY;
// Copy the result back into the FILETIME structure.
ft.dwLowDateTime = (DWORD) (qwResult & 0xFFFFFFFF );
ft.dwHighDateTime = (DWORD) (qwResult >> 32 );
파일 시간 설정
SetFileTime() 함수를 사용 하 여 파일에 대 한 파일 시간을 설정할 수 있습니다.
BOOL SetFileTime(
HANDLE hFile, // Handle to the file.
CONST FILETIME *lpCreationTime, // Time the file was created.
CONST FILETIME *lpLastAccessTime, // Time the file was last accessed.
CONST FILETIME *lpLastWriteTime // Time the file was last
// written to.
);
것으로 간주 szFilename 올바른 파일 이름을 하며 FILETIME 구조가 ft, ft에 있는 시간을 파일을 만든 날짜를 설정 하는 다음 예제 코드:
BOOL bResult;
HANDLE hFile = CreateFile( szFilename,
GENERIC_WRITE, // The file must be opened with write access.
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );
if (hFile != INVALID_HANDLE_VALUE) {
bResult = SetFileTime( hFile, &ft, NULL, NULL );
CloseHandle(hFile);
}
파일 시간 표시
파일 시간 협정 세계시 (UTC)를 기준으로 합니다. UTC 기반 시간에 그리니치, 영국 현재 날짜 및 시간으로 느슨하게 정의 됩니다. 대부분의 경우 현지 시간 (즉, 날짜 및 표준 시간대의 시간)에 대 한 파일 시간을 표시 합니다. 이렇게 하려면 다음과 같이 FileTimeToLocalFileTime()를 사용할 수 있습니다.
BOOL FileTimeToLocalFileTime(
CONST FILETIME *lpFileTime, // Pointer to UTC file time to convert.
LPFILETIME lpLocalFileTime // Pointer to converted file time.
);
첫 번째 파일 시간을 의미 있는 방식으로 표시 하려면 다음과 같이 FileTimeToSystemTime()를 사용 하 여 시스템 시간으로 변환할 필요.
BOOL FileTimeToSystemTime(
CONST FILETIME *lpFileTime, // Pointer to file time to convert.
LPSYSTEMTIME lpSystemTime // Pointer to structure to receive
); // system time.
또한 시스템에 대해 선택한 현재 로케일에 일관 된 형식으로 날짜와 시간을 표시 하는 것이 좋습니다.
int GetDateFormat(
LCID Locale, // Locale for which date is to be formatted.
DWORD dwFlags, // Flags specifying function options.
CONST SYSTEMTIME *lpDate, // Date to be formatted.
LPCTSTR lpFormat, // Date format string.
LPTSTR lpDateStr, // Buffer for storing formatted string.
int cchDate // Size of buffer.
);
int GetTimeFormat(
LCID Locale, // Locale for which time is to be formatted.
DWORD dwFlags, // Flags specifying function options.
CONST SYSTEMTIME *lpTime, // Time to be formatted.
LPCTSTR lpFormat, // Time format string.
LPTSTR lpTimeStr, // Buffer for storing formatted string.
int cchTime // Size of buffer.
);
Ft는 UTC 값을 포함 하는 FILETIME 구조를 가정 하 고 다음 샘플 코드 ft에 저장 된 날짜를 인쇄 합니다.
SYSTEMTIME st;
char szLocalDate[255], szLocalTime[255];
FileTimeToLocalFileTime( &ft, &ft );
FileTimeToSystemTime( &ft, &st );
GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL,
szLocalDate, 255 );
GetTimeFormat( LOCALE_USER_DEFAULT, 0, &st, NULL, szLocalTime, 255 );
printf( "%s %s\n", szLocalDate, szLocalTime );
'WindowsAPI > Reference' 카테고리의 다른 글
2. Windef.h (0) | 2016.10.13 |
---|