Windows API ——GetFileTime——獲取文件時(shí)間
??FILETIME結(jié)構(gòu)包含了文件或目錄的日期和時(shí)間信息:(自1601年1月1日以來(lái),單位為100納秒)
1?typedef?struct?_FILETIME?{ 2? 3???DWORD?dwLowDateTime;?//低32位 4? 5???DWORD?dwHighDateTime;?//高32位 6? 7?}?FILETIME,?*PFILETIME;
?
?
SYSTEMTIME結(jié)構(gòu)包含了用戶可識(shí)別的系統(tǒng)日期信息:
?1?typedef?struct?_SYSTEMTIME?{ ?2? ?3?????WORD?wYear;//年 ?4? ?5?????WORD?wMonth;//月 ?6? ?7?????WORD?wDayOfWeek;//一周的第幾天 ?8? ?9?????WORD?wDay;//日 10? 11?????WORD?wHour;//小時(shí) 12? 13?????WORD?wMinute;//分 14? 15?????WORD?wSecond;//秒 16? 17?????WORD?wMilliseconds;//毫秒 18? 19?}?SYSTEMTIME,?*PSYSTEMTIME;
?
?
=======================================================
函數(shù)FileTimeToSystemTime用來(lái)將文件時(shí)間格式轉(zhuǎn)換為標(biāo)準(zhǔn)系統(tǒng)時(shí)間格式:
1?BOOL?WINAPI?FileTimeToSystemTime( 2? 3???__in???const?FILETIME?*lpFileTime,?//文件時(shí)間 4? 5???__out??LPSYSTEMTIME?lpSystemTime?//系統(tǒng)時(shí)間 6? 7?);
?
函數(shù)FileTimeToLocalTime用來(lái)將文件時(shí)間格式轉(zhuǎn)換為本地文件時(shí)間:
1?BOOL?WINAPI?FileTimeToLocalFileTime( 2???__in??????????const?FILETIME*?lpFileTime,//文件時(shí)間 3???__out?????????LPFILETIME?lpLocalFileTime//本地文件時(shí)間 4?);
?
函數(shù)SystemTimeToFileTime則是將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換成文件時(shí)間格式:
?BOOL?WINAPI?SystemTimeToFileTime( ???__in???const?SYSTEMTIME?*lpSystemTime,//系統(tǒng)時(shí)間 ???__out??LPFILETIME?lpFileTime//文件時(shí)間 ?);
函數(shù)SystemTimeToTzSpecificLocalTime是將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間
1?BOOL?WINAPI?SystemTimeToTzSpecificLocalTime( 2???__in??????????LPTIME_ZONE_INFORMATION?lpTimeZone,//時(shí)區(qū)結(jié)構(gòu) 3???__in??????????LPSYSTEMTIME?lpUniversalTime,//系統(tǒng)時(shí)間 4???__out?????????LPSYSTEMTIME?lpLocalTime//本地時(shí)間 5?);
?
?
=======================================================
GetSystemTime函數(shù)用來(lái)獲得系統(tǒng)時(shí)間:
1?void?WINAPI?GetSystemTime( 2???__out??LPSYSTEMTIME?lpSystemTime 3?);
?
?GetFileTime函數(shù)用來(lái)獲得一個(gè)文件或目錄的創(chuàng)建的時(shí)間、最后訪問(wèn)的時(shí)間以及最后修改的時(shí)間:
1?BOOL?WINAPI?GetFileTime( 2???__in???????HANDLE?hFile,?//文件或目錄句柄 3???__out_opt??LPFILETIME?lpCreationTime,?//返回的創(chuàng)建的日期和時(shí)間信息 4???__out_opt??LPFILETIME?lpLastAccessTime,?//返回的最后訪問(wèn)的日期和時(shí)間信息 5???__out_opt??LPFILETIME?lpLastWriteTime?//返回的最后修改的日期和時(shí)間信息 6? 7?);
實(shí)例:
?
?1?CString?strPath("D:\test.txt"); ?2?HANDLE?hFile?=?CreateFile(strPath,?????????????? ?3???????????????????????????GENERIC_WRITE|?GENERIC_READ,??//必須有GENERIC_READ屬性才能得到時(shí)間????? ?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);//這里得到的時(shí)間是標(biāo)準(zhǔn)系統(tǒng)時(shí)間,也就是0時(shí)區(qū)的時(shí)間。 14?????GetLocalTime(&sysTime);//這里得到的是本地時(shí)間,也就是標(biāo)準(zhǔn)時(shí)間+時(shí)區(qū)時(shí)間 15? 16?????FILETIME?fCreateTime,?fAccessTime,?fWriteTime; 17? 18?????GetFileTime(&hFile,?&fCreateTime,?&fAccessTime,?&fWriteTime);//獲取文件時(shí)間 19? 20?????CString?strTime; 21? 22?//將文件時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間的兩種方式: 23?//(1) 24?????FileTimeToLocalFileTime(&fCreateTime,&localTime);//將文件時(shí)間轉(zhuǎn)換為本地文件時(shí)間 25?????FileTimeToSystemTime(&localTime,?&sysTime);//將文件時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間 26? 27?//(2) 28?????FileTimeToSystemTime(&fCreateTime,?&sysTime);//將文件時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)系統(tǒng)時(shí)間 29?????SystemTimeToTzSpecificLocalTime(&sysTime,?&sysTime)//將標(biāo)準(zhǔn)系統(tǒng)時(shí)間轉(zhuǎn)換為本地系統(tǒng)時(shí)間 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?}
?