Windows API ——GetFileTime——獲取文件時間


  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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM