FILETIME結構包含了文件或目錄的日期和時間信息:(自1601年1月1日以來,單位為100納秒)
1 typedef struct _FILETIME { 2 3 DWORD dwLowDateTime; //低32位 4 5 DWORD dwHighDateTime; //高32位 6 7 } FILETIME, *PFILETIME;
SYSTEMTIME結構包含了用戶可識別的系統日期信息:
1 typedef struct _SYSTEMTIME { 2 3 WORD wYear;//年 4 5 WORD wMonth;//月 6 7 WORD wDayOfWeek;//一周的第幾天 8 9 WORD wDay;//日 10 11 WORD wHour;//小時 12 13 WORD wMinute;//分 14 15 WORD wSecond;//秒 16 17 WORD wMilliseconds;//毫秒 18 19 } SYSTEMTIME, *PSYSTEMTIME;
=======================================================
函數FileTimeToSystemTime用來將文件時間格式轉換為標准系統時間格式:
1 BOOL WINAPI FileTimeToSystemTime( 2 3 __in const FILETIME *lpFileTime, //文件時間 4 5 __out LPSYSTEMTIME lpSystemTime //系統時間 6 7 );
函數FileTimeToLocalTime用來將文件時間格式轉換為本地文件時間:
1 BOOL WINAPI FileTimeToLocalFileTime( 2 __in const FILETIME* lpFileTime,//文件時間 3 __out LPFILETIME lpLocalFileTime//本地文件時間 4 );
函數SystemTimeToFileTime則是將標准系統時間轉換成文件時間格式:
BOOL WINAPI SystemTimeToFileTime( __in const SYSTEMTIME *lpSystemTime,//系統時間 __out LPFILETIME lpFileTime//文件時間 );
函數SystemTimeToTzSpecificLocalTime是將標准系統時間轉換為本地系統時間
1 BOOL WINAPI SystemTimeToTzSpecificLocalTime( 2 __in LPTIME_ZONE_INFORMATION lpTimeZone,//時區結構 3 __in LPSYSTEMTIME lpUniversalTime,//系統時間 4 __out LPSYSTEMTIME lpLocalTime//本地時間 5 );
=======================================================
GetSystemTime函數用來獲得系統時間:
1 void WINAPI GetSystemTime( 2 __out LPSYSTEMTIME lpSystemTime 3 );
GetFileTime函數用來獲得一個文件或目錄的創建的時間、最后訪問的時間以及最后修改的時間:
1 BOOL WINAPI GetFileTime( 2 __in HANDLE hFile, //文件或目錄句柄 3 __out_opt LPFILETIME lpCreationTime, //返回的創建的日期和時間信息 4 __out_opt LPFILETIME lpLastAccessTime, //返回的最后訪問的日期和時間信息 5 __out_opt LPFILETIME lpLastWriteTime //返回的最后修改的日期和時間信息 6 7 );
實例:
1 CString strPath("D:\\test.txt"); 2 HANDLE hFile = CreateFile(strPath, 3 GENERIC_WRITE| GENERIC_READ, //必須有GENERIC_READ屬性才能得到時間 4 FILE_SHARE_READ, 5 NULL, 6 TRUNCATE_EXISTING, 7 FILE_ATTRIBUTE_NORMAL, 8 NULL); 9 10 if (hFile != INVALID_HANDLE_VALUE) 11 { 12 SYSTEMTIME sysTime; 13 GetSystemTime(&sysTime);//這里得到的時間是標准系統時間,也就是0時區的時間。 14 GetLocalTime(&sysTime);//這里得到的是本地時間,也就是標准時間+時區時間 15 16 FILETIME fCreateTime, fAccessTime, fWriteTime; 17 18 GetFileTime(&hFile, &fCreateTime, &fAccessTime, &fWriteTime);//獲取文件時間 19 20 CString strTime; 21 22 //將文件時間轉換為本地系統時間的兩種方式: 23 //(1) 24 FileTimeToLocalFileTime(&fCreateTime,&localTime);//將文件時間轉換為本地文件時間 25 FileTimeToSystemTime(&localTime, &sysTime);//將文件時間轉換為本地系統時間 26 27 //(2) 28 FileTimeToSystemTime(&fCreateTime, &sysTime);//將文件時間轉換為標准系統時間 29 SystemTimeToTzSpecificLocalTime(&sysTime, &sysTime)//將標准系統時間轉換為本地系統時間 30 31 strTime.Format(_T("%4d年%2d月%2d日,%2d:%2d:%2d"), 32 sysTime.wYear, 33 sysTime.wMonth, 34 sysTime.wDay, 35 sysTime.wHour, 36 sysTime.wMinute, 37 sysTime.wSecond 38 ); 39 }